diff --git a/.github/actions/setup-workspace/action.yml b/.github/actions/setup-workspace/action.yml index c2e39d0f41b..20e1ff20727 100644 --- a/.github/actions/setup-workspace/action.yml +++ b/.github/actions/setup-workspace/action.yml @@ -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 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3f80e250105..4072bdcaa07 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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 @@ -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 @@ -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 @@ -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) # ============================================================ @@ -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 @@ -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 diff --git a/.github/workflows/publish-dist.yml b/.github/workflows/publish-dist.yml index eded04faf93..37af1dadb8a 100644 --- a/.github/workflows/publish-dist.yml +++ b/.github/workflows/publish-dist.yml @@ -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 diff --git a/.gitignore b/.gitignore index 5020b4b9c08..c216f5288ab 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,9 @@ build/* dist/*.LICENSE.txt dist/*.css +# Ignore local dev mocks/baselines +test/image/**/dev_*.* + npm-debug.log* *.sublime* *~ @@ -16,3 +19,4 @@ tags !.github/ !.gitignore !.npmignore +!.nvmrc diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000000..1c9aeda807d --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +22.23.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 76d8f962e0b..4f956acbb96 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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 diff --git a/CUSTOM_BUNDLE.md b/CUSTOM_BUNDLE.md index 40bccd62bba..3d62bc884d4 100644 --- a/CUSTOM_BUNDLE.md +++ b/CUSTOM_BUNDLE.md @@ -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. diff --git a/draftlogs/7536_change.md b/draftlogs/7536_change.md new file mode 100644 index 00000000000..38cbdc9ac0e --- /dev/null +++ b/draftlogs/7536_change.md @@ -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%)' diff --git a/draftlogs/7684_change.md b/draftlogs/7684_change.md new file mode 100644 index 00000000000..93797426c49 --- /dev/null +++ b/draftlogs/7684_change.md @@ -0,0 +1 @@ + - Set default layout.axis.tickmode to 'sync' when axis is overlaying [[#7684](https://github.com/plotly/plotly.js/pull/7684)] \ No newline at end of file diff --git a/draftlogs/7710_add.md b/draftlogs/7710_add.md new file mode 100644 index 00000000000..2beb5db0a18 --- /dev/null +++ b/draftlogs/7710_add.md @@ -0,0 +1 @@ +- Add `quiver` trace type to visualize vector fields using arrows [[#7710](https://github.com/plotly/plotly.js/pull/7710)] diff --git a/draftlogs/7812_remove.md b/draftlogs/7812_remove.md new file mode 100644 index 00000000000..7c296c752ce --- /dev/null +++ b/draftlogs/7812_remove.md @@ -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)] \ No newline at end of file diff --git a/draftlogs/7825_change.md b/draftlogs/7825_change.md new file mode 100644 index 00000000000..a74243ff3ef --- /dev/null +++ b/draftlogs/7825_change.md @@ -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)] diff --git a/draftlogs/7828_change.md b/draftlogs/7828_change.md new file mode 100644 index 00000000000..7673ab111be --- /dev/null +++ b/draftlogs/7828_change.md @@ -0,0 +1 @@ +- Use plot title as default filename for "Download plot" button [[#7828](https://github.com/plotly/plotly.js/pull/7828)] diff --git a/draftlogs/7829_change.md b/draftlogs/7829_change.md new file mode 100644 index 00000000000..4f33397d561 --- /dev/null +++ b/draftlogs/7829_change.md @@ -0,0 +1 @@ +- Change signature of `plots.graphJson()` function to remove `mode` argument [[#7829](https://github.com/plotly/plotly.js/pull/7829)] diff --git a/draftlogs/7829_remove.md b/draftlogs/7829_remove.md new file mode 100644 index 00000000000..1ae3e694a5b --- /dev/null +++ b/draftlogs/7829_remove.md @@ -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)] diff --git a/draftlogs/7834_remove.md b/draftlogs/7834_remove.md new file mode 100644 index 00000000000..e548a273cf9 --- /dev/null +++ b/draftlogs/7834_remove.md @@ -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)] \ No newline at end of file diff --git a/draftlogs/7843_change.md b/draftlogs/7843_change.md new file mode 100644 index 00000000000..13a635d7c1d --- /dev/null +++ b/draftlogs/7843_change.md @@ -0,0 +1 @@ +- Change `splom.axis.matches` default from `false` to `true` [[#7843](https://github.com/plotly/plotly.js/pull/7843)] diff --git a/draftlogs/7845_add.md b/draftlogs/7845_add.md new file mode 100644 index 00000000000..68c0c99b92e --- /dev/null +++ b/draftlogs/7845_add.md @@ -0,0 +1 @@ +- Use dashed markers in legend for shape traces with dash configured [[#7845](https://github.com/plotly/plotly.js/pull/7845)] diff --git a/draftlogs/7856_add.md b/draftlogs/7856_add.md new file mode 100644 index 00000000000..cbf444e3986 --- /dev/null +++ b/draftlogs/7856_add.md @@ -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)] diff --git a/draftlogs/7861_change.md b/draftlogs/7861_change.md new file mode 100644 index 00000000000..4779bfd84d8 --- /dev/null +++ b/draftlogs/7861_change.md @@ -0,0 +1 @@ +- Update minimum required Node version to 22 [[#7861](https://github.com/plotly/plotly.js/pull/7861)] diff --git a/lib/index-strict.js b/lib/index-strict.js index cac9738bff8..c5d1c092056 100644 --- a/lib/index-strict.js +++ b/lib/index-strict.js @@ -52,6 +52,7 @@ Plotly.register([ require('../src/traces/scatterpolargl/strict'), require('./barpolar'), require('./scattersmith'), + require('./quiver'), // components require('./calendars'), diff --git a/lib/index.d.ts b/lib/index.d.ts new file mode 100644 index 00000000000..d7673612d64 --- /dev/null +++ b/lib/index.d.ts @@ -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 = { 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; diff --git a/lib/index.js b/lib/index.js index d4cb5bdcc87..73f4f0a29b8 100644 --- a/lib/index.js +++ b/lib/index.js @@ -52,6 +52,7 @@ Plotly.register([ require('./scatterpolargl'), require('./barpolar'), require('./scattersmith'), + require('./quiver'), // components require('./calendars'), diff --git a/lib/locales/cs.js b/lib/locales/cs.js index 4d715482e54..695b5050ab4 100644 --- a/lib/locales/cs.js +++ b/lib/locales/cs.js @@ -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 diff --git a/lib/locales/cy.js b/lib/locales/cy.js index f8f792eac4d..fd433d1ac92 100644 --- a/lib/locales/cy.js +++ b/lib/locales/cy.js @@ -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 diff --git a/lib/locales/de.js b/lib/locales/de.js index 2be03de0398..305703f5dd9 100644 --- a/lib/locales/de.js +++ b/lib/locales/de.js @@ -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 diff --git a/lib/locales/es.js b/lib/locales/es.js index 15a8a41369b..6e2129de81c 100644 --- a/lib/locales/es.js +++ b/lib/locales/es.js @@ -33,9 +33,9 @@ module.exports = { 'Reset view': 'Restaurar vista', // components/modebar/buttons.js:582 'Reset views': 'Restaurar vistas', // components/modebar/buttons.js:528 'Show closest data on hover': 'Mostrar el dato más cercano al pasar por encima', // components/modebar/buttons.js:157 - 'Snapshot succeeded': 'La captura de la instantánea finalizó correctamente', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your snapshot!': '¡La descarga de la instantánea falló!', // components/modebar/buttons.js:69 - 'Taking snapshot - this may take a few seconds': 'Capturando una instantánea - podría tardar unos segundos', // components/modebar/buttons.js:57 + 'Image download succeeded': 'La descarga de la imagen finalizó correctamente', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': '¡La descarga de la imagen falló!', // components/modebar/buttons.js:69 + 'Preparing image - this may take a few seconds': 'Preparando una imagen - podría tardar unos segundos', // components/modebar/buttons.js:57 'Toggle Spike Lines': 'Mostrar/Ocultar Guías', // components/modebar/buttons.js:547 'Toggle show closest data on hover': 'Activar/Desactivar mostrar el dato más cercano al pasar por encima', // components/modebar/buttons.js:352 'Turntable rotation': 'Rotación plana', // components/modebar/buttons.js:288 diff --git a/lib/locales/fi.js b/lib/locales/fi.js index 82ae56a9ada..91989d4f3de 100644 --- a/lib/locales/fi.js +++ b/lib/locales/fi.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Palauta näkymän oletusasetukset', 'Reset views': 'Palauta näkymien oletusasetukset', 'Show closest data on hover': 'Näytä kursoria lähin data', - 'Snapshot succeeded': 'Tilannekuvan ottaminen onnistui', - 'Sorry, there was a problem downloading your snapshot!': 'Pahoittelut, tilannekuvan lataaminen epäonnistui!', - 'Taking snapshot - this may take a few seconds': 'Otetaan tilannekuvaa - odota hetki', + 'Image download succeeded': 'Kuvan lataaminen onnistui', + 'Sorry, there was a problem downloading your image!': 'Pahoittelut, kuvan lataaminen epäonnistui!', + 'Preparing image - this may take a few seconds': 'Valmistellaan kuvaa - odota hetki', 'Toggle Spike Lines': 'Näytä huiput', 'Toggle show closest data on hover': 'Näytä kursoria lähin data', 'Turntable rotation': 'Tasokierto', diff --git a/lib/locales/fr.js b/lib/locales/fr.js index 4e4653f8eee..7599e438302 100644 --- a/lib/locales/fr.js +++ b/lib/locales/fr.js @@ -33,9 +33,9 @@ module.exports = { 'Reset view': 'Réinitialiser', 'Reset views': 'Réinitialiser', 'Show closest data on hover': 'Données les plus proches en survol', - 'Snapshot succeeded': 'Conversion réussie', - 'Sorry, there was a problem downloading your snapshot!': 'Désolé, un problème est survenu lors du téléchargement de votre graphique', - 'Taking snapshot - this may take a few seconds': 'Conversion en cours, ceci peut prendre quelques secondes', + 'Image download succeeded': 'Téléchargement du graphique réussi', + 'Sorry, there was a problem downloading your image!': 'Désolé, un problème est survenu lors du téléchargement de votre graphique', + 'Preparing image - this may take a few seconds': 'Conversion en cours, ceci peut prendre quelques secondes', 'Zoom': 'Zoom', 'Zoom in': 'Zoom intérieur', 'Zoom out': 'Zoom extérieur', diff --git a/lib/locales/hr.js b/lib/locales/hr.js index 061acf8f394..34a7fc54f6c 100644 --- a/lib/locales/hr.js +++ b/lib/locales/hr.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Resetirajte pogled', 'Reset views': 'Resetirajte poglede', 'Show closest data on hover': 'Prikaži najbliže podatke pri zadržavanju mišem', - 'Snapshot succeeded': 'Preuzimanje slike uspješno', - 'Sorry, there was a problem downloading your snapshot!': 'Pojavila se greška prilikom preuzimanja slike!', - 'Taking snapshot - this may take a few seconds': 'Preuzimanje slike - ovo može potrajati nekoliko sekundi', + 'Image download succeeded': 'Preuzimanje slike uspješno', + 'Sorry, there was a problem downloading your image!': 'Pojavila se greška prilikom preuzimanja slike!', + 'Preparing image - this may take a few seconds': 'Priprema slike - ovo može potrajati nekoliko sekundi', 'Toggle Spike Lines': 'Postavljanje pomoćnih linija', 'Toggle show closest data on hover': 'Postavljanje prikaza najbližih podataka pri zadržavanju mišem', 'Turntable rotation': 'Turntable rotiranje', diff --git a/lib/locales/it.js b/lib/locales/it.js index 7118f71d620..ec1f1613f79 100644 --- a/lib/locales/it.js +++ b/lib/locales/it.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Reimposta la vista', // components/modebar/buttons.js:583 'Reset views': 'Reimposta le viste', // components/modebar/buttons.js:529 'Show closest data on hover': 'Mostra i dati più vicini al passaggio del mouse', // components/modebar/buttons.js:157 - 'Snapshot succeeded': 'Screenshot creato con successo', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your snapshot!': 'Si è verificato un errore durante la creazione dello screenshot', // components/modebar/buttons.js:69 - 'Taking snapshot - this may take a few seconds': 'Creazione screenshot - potrebbe richiedere qualche secondo', // components/modebar/buttons.js:57 + 'Image download succeeded': 'Immagine scaricata con successo', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': 'Si è verificato un errore durante il download dell\'immagine', // components/modebar/buttons.js:69 + 'Preparing image - this may take a few seconds': 'Preparazione dell\'immagine - potrebbe richiedere qualche secondo', // components/modebar/buttons.js:57 'Zoom': 'Zoom', // components/modebar/buttons.js:85 'Zoom in': 'Ingrandisci', // components/modebar/buttons.js:121 'Zoom out': 'Riduci', // components/modebar/buttons.js:130 diff --git a/lib/locales/ja.js b/lib/locales/ja.js index e227cf3c139..8728e759cca 100644 --- a/lib/locales/ja.js +++ b/lib/locales/ja.js @@ -31,9 +31,9 @@ module.exports = { 'Reset view': 'ビューをリセット', // components/modebar/buttons.js:583 'Reset views': 'ビューをリセット', // components/modebar/buttons.js:529 'Show closest data on hover': 'ホバー時に一番近いデータを表示', // components/modebar/buttons.js:157 - 'Snapshot succeeded': 'スナップショットに成功', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your snapshot!': 'すみません、スナップショットダウンロードでエラーです!', // components/modebar/buttons.js:69 - 'Taking snapshot - this may take a few seconds': 'スナップショットを撮影', // components/modebar/buttons.js:57 + 'Image download succeeded': '画像のダウンロードに成功', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': 'すみません、画像のダウンロードでエラーです!', // components/modebar/buttons.js:69 + 'Preparing image - this may take a few seconds': '画像を準備中', // components/modebar/buttons.js:57 'Zoom': 'ズーム', // components/modebar/buttons.js:85 'Zoom in': '拡大', // components/modebar/buttons.js:121 'Zoom out': '縮小', // components/modebar/buttons.js:130 diff --git a/lib/locales/ko.js b/lib/locales/ko.js index 73d7d34bf2f..a3a4f284286 100644 --- a/lib/locales/ko.js +++ b/lib/locales/ko.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'view 초기화', 'Reset views': 'views 초기화', 'Show closest data on hover': '마우스를 올리면 근접한 데이터를 보이기', - 'Snapshot succeeded': 'Snapshot 성공', - 'Sorry, there was a problem downloading your snapshot!': '죄송합니다, snapshot을 다운로드 중 문제가 발생했습니다!', - 'Taking snapshot - this may take a few seconds': 'snapshot 찍기 - 수 초가 걸릴 수 있습니다', + 'Image download succeeded': '이미지 다운로드 성공', + 'Sorry, there was a problem downloading your image!': '죄송합니다, 이미지를 다운로드 중 문제가 발생했습니다!', + 'Preparing image - this may take a few seconds': '이미지 준비 - 수 초가 걸릴 수 있습니다', 'Toggle Spike Lines': '스위치로 Lines을 고정합니다', 'Toggle show closest data on hover': '스위치로 마우스를 올렸을 때 가장 가까운 데이터를 보여줍니다', 'Turntable rotation': 'Turntable 회전', diff --git a/lib/locales/no.js b/lib/locales/no.js index 7956d7c2352..0276c498674 100644 --- a/lib/locales/no.js +++ b/lib/locales/no.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Nullstille visning', // components/modebar/buttons.js:512 'Reset views': 'Nullstille visninger', // components/modebar/buttons.js:550 'Show closest data on hover': 'Vis nærmeste verdi når musepekeren holdes over', // components/modebar/buttons.js:166 - 'Snapshot succeeded': 'Bilde Laget', // components/modebar/buttons.js:75 - 'Sorry, there was a problem downloading your snapshot!': 'Beklager, noe gikk galt under nedlasting av bildet', // components/modebar/buttons.js:78 - 'Taking snapshot - this may take a few seconds': 'Oppretter bilde - dette kan ta noen sekunder', // components/modebar/buttons.js:60 + 'Image download succeeded': 'Bilde lastet ned', // components/modebar/buttons.js:75 + 'Sorry, there was a problem downloading your image!': 'Beklager, noe gikk galt under nedlasting av bildet', // components/modebar/buttons.js:78 + 'Preparing image - this may take a few seconds': 'Forbereder bilde - dette kan ta noen sekunder', // components/modebar/buttons.js:60 'Toggle Spike Lines': 'Aktiver / deaktiver topplinjer', // components/modebar/buttons.js:569 'Toggle show closest data on hover': 'Aktiver / deaktiver nærmeste verdi når musepekeren holdes over', // components/modebar/buttons.js:361 'Turntable rotation': 'Flat rotation', // components/modebar/buttons.js:290 diff --git a/lib/locales/pt-br.js b/lib/locales/pt-br.js index 9a85104b062..d5ac3c84e35 100644 --- a/lib/locales/pt-br.js +++ b/lib/locales/pt-br.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Restaurar visão', 'Reset views': 'Restaurar visões', 'Show closest data on hover': 'Exibir dado mais próximo ao pairar', - 'Snapshot succeeded': 'Captura instantânea completa', - 'Sorry, there was a problem downloading your snapshot!': 'Desculpe, houve um problema no download de sua captura instantânea!', - 'Taking snapshot - this may take a few seconds': 'Efetuando captura instantânea - isso pode levar alguns instantes', + 'Image download succeeded': 'Download da imagem concluído com sucesso', + 'Sorry, there was a problem downloading your image!': 'Desculpe, houve um problema no download de sua imagem!', + 'Preparing image - this may take a few seconds': 'Preparando a imagem - isso pode levar alguns instantes', 'Toggle Spike Lines': 'Habilitar/desabilitar triangulação de linhas', 'Toggle show closest data on hover': 'Habilitar/desabilitar exibição de dado mais próximo ao pairar', 'Turntable rotation': 'Rotação de mesa', diff --git a/lib/locales/pt-pt.js b/lib/locales/pt-pt.js index 042766ed0e1..514ab3e6019 100644 --- a/lib/locales/pt-pt.js +++ b/lib/locales/pt-pt.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Restaurar vista', 'Reset views': 'Restaurar vistas', 'Show closest data on hover': 'Exibir dado mais próximo ao pairar', - 'Snapshot succeeded': 'Captura instantânea com sucesso', - 'Sorry, there was a problem downloading your snapshot!': 'Desculpe, houve um problema no download de sua captura instantânea!', - 'Taking snapshot - this may take a few seconds': 'Efetuando captura instantânea - isso pode demorar alguns segundos', + 'Image download succeeded': 'Download da imagem concluído com sucesso', + 'Sorry, there was a problem downloading your image!': 'Desculpe, houve um problema no download da sua imagem!', + 'Preparing image - this may take a few seconds': 'A preparar a imagem - isso pode demorar alguns segundos', 'Toggle Spike Lines': 'Habilitar/desabilitar triangulação de linhas', 'Toggle show closest data on hover': 'Habilitar/desabilitar exibição de dado mais próximo ao pairar', 'Turntable rotation': 'Rodar', diff --git a/lib/locales/ro.js b/lib/locales/ro.js index e77bc2fdd15..d80b5ca5c8f 100644 --- a/lib/locales/ro.js +++ b/lib/locales/ro.js @@ -37,9 +37,9 @@ module.exports = { 'Reset view': 'Resetează vizualizarea', 'Reset views': 'Resetează vizualizările', 'Show closest data on hover': 'Afișează cele mai apropiate date la trecerea cu mouse-ul', - 'Snapshot succeeded': 'Crearea capturii de ecran a reușit', - 'Sorry, there was a problem downloading your snapshot!': 'Ne pare rău, a apărut o eroare la descărcarea capturii de ecran!', - 'Taking snapshot - this may take a few seconds': 'Se crează captura de ecran - poate dura câteva secunde', + 'Image download succeeded': 'Descărcarea imaginii a reușit', + 'Sorry, there was a problem downloading your image!': 'Ne pare rău, a apărut o eroare la descărcarea imaginii!', + 'Preparing image - this may take a few seconds': 'Se pregătește imaginea - poate dura câteva secunde', 'Toggle Spike Lines': 'Comutarea afișării liniilor de vârf', 'Toggle show closest data on hover': 'Comutarea afișării celor mai apropiate date', 'Turntable rotation': 'Rotație pe axă', diff --git a/lib/locales/ru.js b/lib/locales/ru.js index 00fff8a4c49..34ec8b51d1f 100644 --- a/lib/locales/ru.js +++ b/lib/locales/ru.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Сбросить отображение к значениям по умолчанию', 'Reset views': 'Сбросить отображения к значениям по умолчанию', 'Show closest data on hover': 'При наведении показывать ближайшие данные', - 'Snapshot succeeded': 'Снимок успешно создан', - 'Sorry, there was a problem downloading your snapshot!': 'К сожалению, возникла проблема при сохранении снимка', - 'Taking snapshot - this may take a few seconds': 'Делается снимок - это может занять несколько секунд', + 'Image download succeeded': 'Изображение успешно загружено', + 'Sorry, there was a problem downloading your image!': 'К сожалению, возникла проблема при загрузке изображения', + 'Preparing image - this may take a few seconds': 'Подготовка изображения - это может занять несколько секунд', 'Toggle Spike Lines': 'Включить/выключить отображение линий проекций точек', 'Toggle show closest data on hover': 'Включить/выключить показ ближайших данных при наведении', 'Turntable rotation': 'Вращение на поворотном столе', diff --git a/lib/locales/si.js b/lib/locales/si.js index 1289bef58a9..0db34a01179 100644 --- a/lib/locales/si.js +++ b/lib/locales/si.js @@ -38,9 +38,9 @@ module.exports = { 'Reset view': 'දැක්ම යළි සකසන්න', // components/modebar/buttons.js:599 'Reset views': 'දැක්ම් යළි සකසන්න', // components/modebar/buttons.js:637 'Show closest data on hover': 'සුනංගු කිරීමේදී ආසන්නම දත්ත පෙන්වන්න', // components/modebar/buttons.js:228 - 'Snapshot succeeded': 'ඡායාරූපය සාර්ථකයි', // components/modebar/buttons.js:67 - 'Sorry, there was a problem downloading your snapshot!': 'සමාවන්න, ඔබගේ ඡායාරූපය බාගැනීමේ ගැටලුවක් ඇත!', // components/modebar/buttons.js:70 - 'Taking snapshot - this may take a few seconds': 'ඡායාරූපය ගැනෙමින් - මෙයට තත්. කිහිපයක් ගතවිය හැකිය', // components/modebar/buttons.js:52 + 'Image download succeeded': 'ඡායාරූපය බාගැනීම සාර්ථකයි', // components/modebar/buttons.js:67 + 'Sorry, there was a problem downloading your image!': 'සමාවන්න, ඔබගේ ඡායාරූපය බාගැනීමේ ගැටලුවක් ඇත!', // components/modebar/buttons.js:70 + 'Preparing image - this may take a few seconds': 'ඡායාරූපය සූදානම් කරමින් - මෙයට තත්. කිහිපයක් ගතවිය හැකිය', // components/modebar/buttons.js:52 'Toggle Spike Lines': 'Toggle Spike Lines', // components/modebar/buttons.js:656 'Toggle show closest data on hover': 'Toggle show closest data on hover', // components/modebar/buttons.js:440 'Turntable rotation': 'බමර කරකැවීම', // components/modebar/buttons.js:351 diff --git a/lib/locales/sk.js b/lib/locales/sk.js index 52360965110..f4a6b5a922a 100644 --- a/lib/locales/sk.js +++ b/lib/locales/sk.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Obnoviť nastavenie pohľadu', // components/modebar/buttons.js:583 'Reset views': 'Obnoviť nastavenie pohľadov', // components/modebar/buttons.js:529 'Show closest data on hover': 'Zobraziť najbližšiu hodnotu při prejdení myšou', // components/modebar/buttons.js:157 - 'Snapshot succeeded': 'Obrázok vytvorený', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your snapshot!': 'Ospravedlňujeme sa, došlo k chybe pri sťahovaní obrázka!', // components/modebar/buttons.js:69 - 'Taking snapshot - this may take a few seconds': 'Snímanie - môže trvať niekoľko sekúnd', // components/modebar/buttons.js:57 + 'Image download succeeded': 'Obrázok stiahnutý', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': 'Ospravedlňujeme sa, došlo k chybe pri sťahovaní obrázka!', // components/modebar/buttons.js:69 + 'Preparing image - this may take a few seconds': 'Príprava obrázka - môže trvať niekoľko sekúnd', // components/modebar/buttons.js:57 'Zoom': 'Zväčšenie', // components/modebar/buttons.js:85 'Zoom in': 'Zväčšiť', // components/modebar/buttons.js:121 'Zoom out': 'Zmenšiť', // components/modebar/buttons.js:130 diff --git a/lib/locales/sv.js b/lib/locales/sv.js index f3b215a4996..ce69e7a6580 100644 --- a/lib/locales/sv.js +++ b/lib/locales/sv.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Återställ vy', // components/modebar/buttons.js:512 'Reset views': 'Återställ vyer', // components/modebar/buttons.js:550 'Show closest data on hover': 'Visa närmaste värde när muspekaren hålls över', // components/modebar/buttons.js:166 - 'Snapshot succeeded': 'Bild skapad', // components/modebar/buttons.js:75 - 'Sorry, there was a problem downloading your snapshot!': 'Tyvärr gick något fel vid nedladdning av bild', // components/modebar/buttons.js:78 - 'Taking snapshot - this may take a few seconds': 'Skapar bild - detta kan ta några sekunder', // components/modebar/buttons.js:60 + 'Image download succeeded': 'Nedladdning av bild slutförd', // components/modebar/buttons.js:75 + 'Sorry, there was a problem downloading your image!': 'Tyvärr gick något fel vid nedladdning av bild', // components/modebar/buttons.js:78 + 'Preparing image - this may take a few seconds': 'Förbereder bild - detta kan ta några sekunder', // components/modebar/buttons.js:60 'Toggle Spike Lines': 'Aktivera/Inaktivera topplinjer', // components/modebar/buttons.js:569 'Toggle show closest data on hover': 'Aktivera/Inaktivera visa närmaste värde när muspekaren hålls över', // components/modebar/buttons.js:361 'Turntable rotation': 'Platt rotation', // components/modebar/buttons.js:290 diff --git a/lib/locales/sw.js b/lib/locales/sw.js index 6d173e19b80..f66f6811902 100644 --- a/lib/locales/sw.js +++ b/lib/locales/sw.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Weka upya mtazamo', 'Reset views': 'Weka upya maoni', 'Show closest data on hover': 'Onyesha data iliyo karibu zaidi kielekezi kinapoelea', - 'Snapshot succeeded': 'Snapshot ilifanikiwa', - 'Sorry, there was a problem downloading your snapshot!': 'Samahani, kulikuwa na shida kupakua picha yako!', - 'Taking snapshot - this may take a few seconds': 'Kuchukua snapshot - hii inaweza kuchukua sekunde chache', + 'Image download succeeded': 'Upakuaji wa picha umefanikiwa', + 'Sorry, there was a problem downloading your image!': 'Samahani, kulikuwa na shida kupakua picha yako!', + 'Preparing image - this may take a few seconds': 'Kuandaa picha - hii inaweza kuchukua sekunde chache', 'Toggle Spike Lines': 'Badilisha Mistari ya Spike', 'Toggle show closest data on hover': 'Badilisha mabadiliko ya karibu zaidi kwenye hover', 'Turntable rotation': 'Zunguka kwa mhimili wa Z', diff --git a/lib/locales/tr.js b/lib/locales/tr.js index 7accb25bcd5..74fde19f24f 100644 --- a/lib/locales/tr.js +++ b/lib/locales/tr.js @@ -31,9 +31,9 @@ module.exports = { 'Reset view': 'Görünümü sıfırla', 'Reset views': 'Görünümleri sıfırla', 'Show closest data on hover': 'Üzerine gelince en yakın veriyi göster', - 'Snapshot succeeded': 'Anlık görüntü alındı', - 'Sorry, there was a problem downloading your snapshot!': 'Üzgünüz, anlık görüntünüz indirilirken bir sorun oluştu!', - 'Taking snapshot - this may take a few seconds': 'Anlık görüntü alınıyor - bu işlem birkaç saniye sürebilir', + 'Image download succeeded': 'Görüntü indirme başarılı', + 'Sorry, there was a problem downloading your image!': 'Üzgünüz, görüntünüz indirilirken bir sorun oluştu!', + 'Preparing image - this may take a few seconds': 'Görüntü hazırlanıyor - bu işlem birkaç saniye sürebilir', 'Zoom': 'Yakınlaştır', 'Zoom in': 'Yakınlaş', 'Zoom out': 'Uzaklaş', diff --git a/lib/locales/uk.js b/lib/locales/uk.js index 635bd202563..f5692283997 100644 --- a/lib/locales/uk.js +++ b/lib/locales/uk.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Встановити відображенню значення за замовчуванням', 'Reset views': 'Встановити відображенням значення за замовчуванням', 'Show closest data on hover': 'При наведенні показувати найближчі дані', - 'Snapshot succeeded': 'Знімок успішно створений', - 'Sorry, there was a problem downloading your snapshot!': 'На жаль, виникла проблема при збереженні знімку', - 'Taking snapshot - this may take a few seconds': 'Створюється знімок - це може зайняти кілька секунд', + 'Image download succeeded': 'Зображення успішно завантажено', + 'Sorry, there was a problem downloading your image!': 'На жаль, виникла проблема при завантаженні зображення', + 'Preparing image - this may take a few seconds': 'Підготовка зображення - це може зайняти кілька секунд', 'Toggle Spike Lines': 'Увімкнути/вимкнути відображення ліній проекцій точок', 'Toggle show closest data on hover': 'Увімкнути/вимкнути відображення найближчих даних при наведенні', 'Turntable rotation': 'Обертання на поворотному столі', diff --git a/lib/locales/zh-cn.js b/lib/locales/zh-cn.js index 7252e623a03..f6e082a0602 100644 --- a/lib/locales/zh-cn.js +++ b/lib/locales/zh-cn.js @@ -31,9 +31,9 @@ module.exports = { 'Reset view': '重置视图', // components/modebar/buttons.js:583 'Reset views': '重置视图', // components/modebar/buttons.js:529 'Show closest data on hover': '悬停时显示最近的数据', // components/modebar/buttons.js:157 - 'Snapshot succeeded': '生成快照成功', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your snapshot!': '抱歉,下载快照出现问题!', // components/modebar/buttons.js:69 - 'Taking snapshot - this may take a few seconds': '正在生成快照 - 可能需要几秒钟', // components/modebar/buttons.js:57 + 'Image download succeeded': '图片下载成功', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': '抱歉,下载图片出现问题!', // components/modebar/buttons.js:69 + 'Preparing image - this may take a few seconds': '正在准备图片 - 可能需要几秒钟', // components/modebar/buttons.js:57 'Zoom': '缩放', // components/modebar/buttons.js:85 'Zoom in': '放大', // components/modebar/buttons.js:121 'Zoom out': '缩小', // components/modebar/buttons.js:130 diff --git a/lib/locales/zh-tw.js b/lib/locales/zh-tw.js index 02a29ffc9c9..aeae1254e89 100644 --- a/lib/locales/zh-tw.js +++ b/lib/locales/zh-tw.js @@ -38,9 +38,9 @@ module.exports = { 'Reset view': '重置視圖', // components/modebar/buttons.js:583 'Reset views': '重置視圖', // components/modebar/buttons.js:529 'Show closest data on hover': '游標停留時顯示最接近的資料', // components/modebar/buttons.js:157 - 'Snapshot succeeded': '快照成功', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your snapshot!': '抱歉,下載快照時發生錯誤!', // components/modebar/buttons.js:69 - 'Taking snapshot - this may take a few seconds': '產生快照中 - 可能需要一點時間', // components/modebar/buttons.js:57 + 'Image download succeeded': '圖片下載成功', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': '抱歉,下載圖片時發生錯誤!', // components/modebar/buttons.js:69 + 'Preparing image - this may take a few seconds': '準備圖片中 - 可能需要一點時間', // components/modebar/buttons.js:57 'Zoom': '縮放', // components/modebar/buttons.js:85 'Zoom in': '放大', // components/modebar/buttons.js:121 'Zoom out': '縮小', // components/modebar/buttons.js:130 diff --git a/lib/quiver.js b/lib/quiver.js new file mode 100644 index 00000000000..12179a54900 --- /dev/null +++ b/lib/quiver.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../src/traces/quiver'); diff --git a/package-lock.json b/package-lock.json index d0e448eea45..50e82c31009 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,9 +18,10 @@ "@turf/bbox": "^7.1.0", "@turf/centroid": "^7.1.0", "base64-arraybuffer": "^1.0.2", + "color": "^5.0.0", "color-normalize": "1.5.0", "color-rgba": "3.0.0", - "country-regex": "^1.1.0", + "country-iso-search": "^0.1.1", "d3-force": "^1.2.1", "d3-format": "^1.4.5", "d3-geo": "^1.12.1", @@ -48,7 +49,6 @@ "regl-splom": "^1.0.14", "strongly-connected-components": "^1.0.1", "svg-path-sdf": "^1.1.3", - "tinycolor2": "^1.4.2", "topojson-client": "^3.1.0", "webgl-context": "^2.2.0", "world-calendars": "^1.0.4" @@ -57,6 +57,8 @@ "@biomejs/biome": "2.2.0", "@plotly/mathjax-v2": "npm:mathjax@2.7.5", "@plotly/mathjax-v3": "npm:mathjax@^3.2.2", + "@types/d3": "3.5.34", + "@types/node": "^24.10.0", "amdefine": "^1.0.1", "assert": "^2.1.0", "browserify-transform-tools": "^1.7.0", @@ -107,10 +109,12 @@ "through2": "^4.0.2", "transform-loader": "^0.2.4", "true-case-path": "^2.2.1", + "ts-node": "^10.9.2", + "typescript": "^5.9.3", "virtual-webgl": "^1.0.7" }, "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } }, "node_modules/@asamuzakjp/css-color": { @@ -201,74 +205,6 @@ "@biomejs/cli-win32-x64": "2.2.0" } }, - "node_modules/@biomejs/cli-darwin-arm64": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.2.0.tgz", - "integrity": "sha512-zKbwUUh+9uFmWfS8IFxmVD6XwqFcENjZvEyfOxHs1epjdH3wyyMQG80FGDsmauPwS2r5kXdEM0v/+dTIA9FXAg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=14.21.3" - } - }, - "node_modules/@biomejs/cli-darwin-x64": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.2.0.tgz", - "integrity": "sha512-+OmT4dsX2eTfhD5crUOPw3RPhaR+SKVspvGVmSdZ9y9O/AgL8pla6T4hOn1q+VAFBHuHhsdxDRJgFCSC7RaMOw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=14.21.3" - } - }, - "node_modules/@biomejs/cli-linux-arm64": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.2.0.tgz", - "integrity": "sha512-6eoRdF2yW5FnW9Lpeivh7Mayhq0KDdaDMYOJnH9aT02KuSIX5V1HmWJCQQPwIQbhDh68Zrcpl8inRlTEan0SXw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.21.3" - } - }, - "node_modules/@biomejs/cli-linux-arm64-musl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.2.0.tgz", - "integrity": "sha512-egKpOa+4FL9YO+SMUMLUvf543cprjevNc3CAgDNFLcjknuNMcZ0GLJYa3EGTCR2xIkIUJDVneBV3O9OcIlCEZQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.21.3" - } - }, "node_modules/@biomejs/cli-linux-x64": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.2.0.tgz", @@ -303,40 +239,6 @@ "node": ">=14.21.3" } }, - "node_modules/@biomejs/cli-win32-arm64": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.2.0.tgz", - "integrity": "sha512-n9a1/f2CwIDmNMNkFs+JI0ZjFnMO0jdOyGNtihgUNFnlmd84yIYY2KMTBmMV58ZlVHjgmY5Y6E1hVTnSRieggA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=14.21.3" - } - }, - "node_modules/@biomejs/cli-win32-x64": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.2.0.tgz", - "integrity": "sha512-Nawu5nHjP/zPKTIryh2AavzTc/KEg4um/MxWdXW0A6P/RZOyIpa7+QSjeXwAwX/utJGaCoXRPWtF3m5U/bB3Ww==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=14.21.3" - } - }, "node_modules/@choojs/findup": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz", @@ -357,6 +259,30 @@ "node": ">=0.1.90" } }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@csstools/color-helpers": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", @@ -411,491 +337,91 @@ "type": "github", "url": "https://github.com/sponsors/csstools" }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "dependencies": { - "@csstools/color-helpers": "^5.0.2", - "@csstools/css-calc": "^2.1.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", - "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", - "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@dependents/detective-less": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@dependents/detective-less/-/detective-less-5.0.0.tgz", - "integrity": "sha512-D/9dozteKcutI5OdxJd8rU+fL6XgaaRg60sPPJWkT33OCiRfkCu5wO5B/yXTaaL2e6EB0lcCBGe5E0XscZCvvQ==", - "dev": true, - "dependencies": { - "gonzales-pe": "^4.3.0", - "node-source-walk": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", - "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", - "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", - "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", - "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", - "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", - "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", - "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", - "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", - "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", - "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", - "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", - "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", - "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", - "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", - "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", - "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", - "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", - "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", - "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", - "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", - "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", - "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openharmony" + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.0.2", + "@csstools/css-calc": "^2.1.2" + }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", - "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", - "cpu": [ - "x64" - ], + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", "dev": true, - "optional": true, - "os": [ - "sunos" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "license": "MIT", "engines": { "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", - "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", - "cpu": [ - "arm64" - ], + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", "dev": true, - "optional": true, - "os": [ - "win32" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "license": "MIT", "engines": { "node": ">=18" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", - "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", - "cpu": [ - "ia32" - ], + "node_modules/@dependents/detective-less": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@dependents/detective-less/-/detective-less-5.0.0.tgz", + "integrity": "sha512-D/9dozteKcutI5OdxJd8rU+fL6XgaaRg60sPPJWkT33OCiRfkCu5wO5B/yXTaaL2e6EB0lcCBGe5E0XscZCvvQ==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "gonzales-pe": "^4.3.0", + "node-source-walk": "^7.0.0" + }, "engines": { "node": ">=18" } }, - "node_modules/@esbuild/win32-x64": { + "node_modules/@esbuild/linux-x64": { "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", - "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", "cpu": [ "x64" ], "dev": true, "optional": true, "os": [ - "win32" + "linux" ], "engines": { "node": ">=18" @@ -969,20 +495,33 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "peer": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "peer": true, "engines": { @@ -990,14 +529,14 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "peer": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -1007,9 +546,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "peer": true, "dependencies": { @@ -1342,6 +881,34 @@ "node": ">=18" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, "node_modules/@turf/area": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.1.0.tgz", @@ -1432,36 +999,18 @@ "@types/node": "*" } }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "node_modules/@types/d3": { + "version": "3.5.34", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-3.5.34.tgz", + "integrity": "sha512-2Ub7NdmaSLviC8lwRGt/7use4LBdLQi7iPEkM97yGKrbmCUqepOgOrGJLi1jPdR0/IIwBDpIbtOgdAOJWWXC+Q==", "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } + "license": "MIT" }, "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@types/geojson": { @@ -1478,11 +1027,10 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true }, "node_modules/@types/karma": { "version": "1.7.8", @@ -1510,10 +1058,14 @@ } }, "node_modules/@types/node": { - "version": "14.11.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.2.tgz", - "integrity": "sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA==", - "dev": true + "version": "24.10.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.0.tgz", + "integrity": "sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } }, "node_modules/@types/pbf": { "version": "3.0.5", @@ -1570,9 +1122,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1580,12 +1132,12 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.2" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -1689,178 +1241,163 @@ "dev": true }, "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, - "license": "Apache-2.0", "peer": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -1869,7 +1406,6 @@ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true, - "license": "BSD-3-Clause", "peer": true }, "node_modules/@xtuc/long": { @@ -1877,7 +1413,6 @@ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true, - "license": "Apache-2.0", "peer": true }, "node_modules/abs-svg-path": { @@ -1929,6 +1464,32 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk/node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/agent-base": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", @@ -1940,11 +1501,10 @@ } }, "node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1956,48 +1516,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "peer": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "peer": true - }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", @@ -2062,6 +1580,13 @@ "integrity": "sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==", "dev": true }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", @@ -2194,20 +1719,6 @@ "node": "^4.5.0 || >= 5.9" } }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.13", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.13.tgz", - "integrity": "sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -2343,9 +1854,9 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -2376,9 +1887,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "dev": true, "funding": [ { @@ -2394,14 +1905,12 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "peer": true, "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -2547,9 +2056,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001784", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001784.tgz", - "integrity": "sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw==", + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", "dev": true, "funding": [ { @@ -2565,7 +2074,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "CC-BY-4.0", "peer": true }, "node_modules/canvas": { @@ -2818,6 +2326,19 @@ "node": ">=0.8" } }, + "node_modules/color": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-5.0.0.tgz", + "integrity": "sha512-16BlyiuyLq3MLxpRWyOTiWsO3ii/eLQLJUQXBSNcxMBBSnyt1ee9YUdaozQp03ifwm5woztEZGDbk9RGVuCsdw==", + "license": "MIT", + "dependencies": { + "color-convert": "^3.0.1", + "color-string": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/color-alpha": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/color-alpha/-/color-alpha-1.0.4.tgz", @@ -2915,6 +2436,48 @@ "integrity": "sha512-nKqUYlo0vZATVOFHY810BSYjmCARrG7e5R3UE3CQlyjJTvv5kSSmPG1kzm/oDyyqjehM+lW1RnEt9It9GNa5JA==", "license": "MIT" }, + "node_modules/color-string": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz", + "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", + "license": "MIT", + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/color-string/node_modules/color-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.0.0.tgz", + "integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.0.tgz", + "integrity": "sha512-TVoqAq8ZDIpK5lsQY874DDnu65CSsc9vzq0wLpNQ6UMBq81GSZocVazPiBbYGzngzBOIRahpkTzCLVe2at4MfA==", + "license": "MIT", + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=14.6" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.0.0.tgz", + "integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, "node_modules/colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -3068,13 +2631,24 @@ "vary": "^1" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.10" + } + }, + "node_modules/country-iso-search": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/country-iso-search/-/country-iso-search-0.1.1.tgz", + "integrity": "sha512-JJxdoVmgZW3F4DdQ4Jq3NuVfqsk6XoHq8PE8QXNIv1BVwAKyJum2dahC7hsW+v60xwH7pm7g8BwCJ05aUabApg==", + "license": "MIT", + "engines": { + "node": ">=20" } }, - "node_modules/country-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/country-regex/-/country-regex-1.1.0.tgz", - "integrity": "sha1-UcMz3N8Sknt+XuucEKyBEqYSCJY=" + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.6", @@ -3258,6 +2832,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -3753,6 +3328,16 @@ "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", "dev": true }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -3944,11 +3529,10 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.5.330", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.330.tgz", - "integrity": "sha512-jFNydB5kFtYUobh4IkWUnXeyDbjf/r9gcUEXe1xcrcUxIGfTdzPXA+ld6zBRbwvgIGVzDll/LTIiDztEtckSnA==", + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.6.tgz", + "integrity": "sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw==", "dev": true, - "license": "ISC", "peer": true }, "node_modules/elementary-circuits-directed-graph": { @@ -4022,14 +3606,13 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", - "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" + "tapable": "^2.2.0" }, "engines": { "node": ">=10.13.0" @@ -4099,11 +3682,10 @@ "dev": true }, "node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/es-object-atoms": { @@ -4256,11 +3838,10 @@ } }, "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -4528,23 +4109,6 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, - "node_modules/fast-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", - "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "peer": true - }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -4668,9 +4232,9 @@ } }, "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true }, "node_modules/flatten-vertex-data": { @@ -4682,9 +4246,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", - "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { @@ -4692,7 +4256,6 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -4841,20 +4404,6 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -5070,13 +4619,12 @@ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, - "license": "BSD-2-Clause", "peer": true }, "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5084,12 +4632,12 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.2" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -5725,9 +5273,9 @@ } }, "node_modules/immutable": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.8.tgz", - "integrity": "sha512-d/Ld9aLbKpNwyl0KiM2CT1WYvkitQ1TSvmRtkcV8FKStiDoA7Slzgjmb/1G2yhKM1p0XeNOieaTbFZmU1d3Xuw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", "dev": true }, "node_modules/inflight": { @@ -6720,18 +6268,13 @@ } }, "node_modules/loader-runner": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", - "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" } }, "node_modules/loader-utils": { @@ -6749,9 +6292,9 @@ } }, "node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "node_modules/lodash.merge": { @@ -6982,6 +6525,13 @@ "sourcemap-codec": "^1.4.4" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, "node_modules/map-limit": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", @@ -7305,9 +6855,9 @@ } }, "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -7431,9 +6981,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true, "funding": [ { @@ -7441,7 +6991,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -7540,11 +7089,10 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.36", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", - "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/node-source-walk": { @@ -7607,9 +7155,9 @@ } }, "node_modules/npm-link-check/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7636,9 +7184,9 @@ } }, "node_modules/npm-link-check/node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -8111,18 +7659,16 @@ "integrity": "sha1-X3yysfIabh6ISgyHhVqko3NhEHs=" }, "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true }, "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -8131,9 +7677,9 @@ } }, "node_modules/pixelmatch": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-7.1.0.tgz", - "integrity": "sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-7.2.0.tgz", + "integrity": "sha512-xhcb4yHu9sM/G7foGzoLtXYcC0zHEaOXXjRKhGup0fw78Nf2Tkiapv4EQyMzrbcmQPsllAI7DbFY2UT7PlI9Pg==", "dev": true, "license": "ISC", "dependencies": { @@ -8173,9 +7719,9 @@ "integrity": "sha512-ziHW/02J0XuNuUtmidBc6GXE8YohYydp3DWPWXYsd7O721TjcmN+k6ezjdwkDqep+gnWnFY+yqZHvzElra2oCg==" }, "node_modules/postcss": { - "version": "8.5.12", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz", - "integrity": "sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==", + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", "dev": true, "funding": [ { @@ -8191,11 +7737,10 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -8420,9 +7965,9 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/protocol-buffers-schema": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.1.tgz", - "integrity": "sha512-VG2K63Igkiv9p76tk1lilczEK1cT+kCjKtkdhw1dQZV3k3IXJbd3o6Ho8b9zJZaHSnT2hKe4I+ObmX9w6m5SmQ==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.4.0.tgz", + "integrity": "sha512-G/2kcamPF2S49W5yaMGdIpkG6+5wZF0fzBteLKgEHjbNzqjZQ85aAs1iJGto31EJaSTkNvHs5IXuHSaTLWBAiA==" }, "node_modules/pump": { "version": "3.0.2", @@ -8488,6 +8033,16 @@ "performance-now": "^2.1.0" } }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -8821,16 +8376,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/requirejs": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.7.tgz", @@ -9108,6 +8653,16 @@ "semver": "bin/semver.js" } }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -9363,44 +8918,18 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", - "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, - "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.4.1" + "debug": "~4.3.1" }, "engines": { "node": ">=10.0.0" } }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socket.io-parser/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/sort-asc": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz", @@ -9443,11 +8972,10 @@ } }, "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -9862,17 +9390,12 @@ "dev": true }, "node_modules/tapable": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", - "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" } }, "node_modules/tar-fs": { @@ -9985,16 +9508,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", - "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "peer": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "terser": "^5.31.1" + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -10019,10 +9543,11 @@ } }, "node_modules/terser-webpack-plugin/node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "license": "MIT", "peer": true, "bin": { "acorn": "bin/acorn" @@ -10031,72 +9556,15 @@ "node": ">=0.4.0" } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "peer": true - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", - "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", + "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", "dev": true, "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -10166,14 +9634,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/tinycolor2": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", - "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", - "engines": { - "node": "*" - } - }, "node_modules/tinyqueue": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", @@ -10342,6 +9802,63 @@ "node": ">=18" } }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/tsconfig-paths": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", @@ -10430,9 +9947,9 @@ } }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -10474,6 +9991,13 @@ "node": "*" } }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -10552,9 +10076,9 @@ "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" }, "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, "funding": [ { @@ -10570,11 +10094,10 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "peer": true, "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -10630,6 +10153,13 @@ "node": ">= 0.4.0" } }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -10697,11 +10227,10 @@ } }, "node_modules/watchpack": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", - "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -10743,38 +10272,35 @@ } }, "node_modules/webpack": { - "version": "5.105.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", - "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.8", - "@types/json-schema": "^7.0.15", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.16.0", - "acorn-import-phases": "^1.0.3", - "browserslist": "^4.28.1", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.20.0", - "es-module-lexer": "^2.0.0", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.3.1", + "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.17", - "watchpack": "^2.5.1", - "webpack-sources": "^3.3.4" + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" }, "bin": { "webpack": "bin/webpack.js" @@ -10793,20 +10319,19 @@ } }, "node_modules/webpack-sources": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", - "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=10.13.0" } }, "node_modules/webpack/node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", "peer": true, @@ -10817,50 +10342,14 @@ "node": ">=0.4.0" } }, - "node_modules/webpack/node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/webpack/node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, - "license": "MIT", "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, "peerDependencies": { - "ajv": "^8.8.2" + "acorn": "^8" } }, "node_modules/webpack/node_modules/eslint-scope": { @@ -10877,35 +10366,6 @@ "node": ">=8.0.0" } }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/whatwg-encoding": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", @@ -11240,6 +10700,16 @@ "engines": { "node": ">=10" } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } } } } diff --git a/package.json b/package.json index 1f4a9fd62c1..255130b79ab 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "The open source javascript graphing library that powers plotly", "license": "MIT", "main": "./lib/index.js", + "types": "./lib/index.d.ts", "webpack": "./dist/plotly.js", "repository": { "type": "git", @@ -21,7 +22,7 @@ "plotly" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" }, "scripts": { "custom-bundle": "node tasks/custom_bundle.mjs", @@ -29,9 +30,10 @@ "extra-bundles": "node tasks/extra_bundles.mjs", "locales": "node tasks/locales.js", "schema": "node tasks/schema.mjs", + "schema-typegen-diff-check": "npm run schema && git diff --exit-code src/types/generated/ test/plot-schema.json", "stats": "node tasks/stats.js", "find-strings": "node tasks/find_locale_strings.js", - "preprocess": "node tasks/preprocess.js", + "preprocess": "ts-node tasks/preprocess.js", "use-draftlogs": "node tasks/use_draftlogs.js", "empty-draftlogs": "node tasks/empty_draftlogs.js", "empty-dist": "node tasks/empty_dist.js", @@ -40,12 +42,14 @@ "cibuild": "npm run empty-dist && npm run preprocess && node tasks/cibundle.mjs", "lint": "npx @biomejs/biome lint", "lint-fix": "npx @biomejs/biome format ./test/image/mocks --write; npx @biomejs/biome lint --write || true", + "typecheck": "tsc --noEmit", + "typecheck-watch": "tsc --noEmit --watch", "pretest": "node tasks/pretest.js", "test-jasmine": "karma start test/jasmine/karma.conf.js", "test-mock": "node tasks/test_mock.mjs", "test-image": "node test/image/compare_pixels_test.mjs", "test-export": "node test/image/export_test.js", - "test-syntax": "node tasks/test_syntax.js && npm run find-strings -- --no-output", + "test-syntax": "ts-node tasks/test_syntax.js && npm run find-strings -- --no-output", "test-bundle": "node tasks/test_bundle.js", "test-plain-obj": "node tasks/test_plain_obj.mjs", "test": "npm run test-jasmine -- --nowatch && npm run test-bundle && npm run test-image && npm run test-export && npm run test-syntax && npm run lint", @@ -56,7 +60,7 @@ "start": "node devtools/test_dashboard/server.mjs", "baseline": "node test/image/make_baseline.mjs", "noci-baseline": "npm run cibuild && ./tasks/noci_test.sh image && git checkout dist && echo 'Please do not commit unless the change was expected!'", - "preversion": "check-node-version --node 18 --npm 10 && npm-link-check && npm ls --prod --all", + "preversion": "check-node-version --node 22 --npm 10 && npm-link-check && npm ls --prod --all", "version": "npm run build && git add -A lib dist build src/version.js", "postversion": "node -e \"console.log('Version bumped and committed. If ok, run: git push && git push --tags')\"", "postpublish": "node tasks/sync_packages.js" @@ -76,9 +80,10 @@ "@turf/bbox": "^7.1.0", "@turf/centroid": "^7.1.0", "base64-arraybuffer": "^1.0.2", + "color": "^5.0.0", "color-normalize": "1.5.0", "color-rgba": "3.0.0", - "country-regex": "^1.1.0", + "country-iso-search": "^0.1.1", "d3-force": "^1.2.1", "d3-format": "^1.4.5", "d3-geo": "^1.12.1", @@ -106,7 +111,6 @@ "regl-splom": "^1.0.14", "strongly-connected-components": "^1.0.1", "svg-path-sdf": "^1.1.3", - "tinycolor2": "^1.4.2", "topojson-client": "^3.1.0", "webgl-context": "^2.2.0", "world-calendars": "^1.0.4" @@ -115,6 +119,8 @@ "@biomejs/biome": "2.2.0", "@plotly/mathjax-v2": "npm:mathjax@2.7.5", "@plotly/mathjax-v3": "npm:mathjax@^3.2.2", + "@types/d3": "3.5.34", + "@types/node": "^24.10.0", "amdefine": "^1.0.1", "assert": "^2.1.0", "browserify-transform-tools": "^1.7.0", @@ -165,9 +171,14 @@ "through2": "^4.0.2", "transform-loader": "^0.2.4", "true-case-path": "^2.2.1", + "ts-node": "^10.9.2", + "typescript": "^5.9.3", "virtual-webgl": "^1.0.7" }, "overrides": { + "color": { + "color-string": "^2.1.4" + }, "falafel": { "acorn": "^8.1.1" } diff --git a/src/components/color/attributes.js b/src/components/color/attributes.js index 710cc5eb145..7823787f164 100644 --- a/src/components/color/attributes.js +++ b/src/components/color/attributes.js @@ -25,6 +25,6 @@ exports.borderLine = '#BEC8D9'; // with axis.color and Color.interp we aren't using lightLine // itself anymore, instead interpolating between axis.color -// and the background color using tinycolor.mix. lightFraction +// and the background color using Color.mix. lightFraction // gives back exactly lightLine if the other colors are defaults. exports.lightFraction = 100 * (0xe - 0x4) / (0xf - 0x4); diff --git a/src/components/color/index.js b/src/components/color/index.js index 59f8932e3fe..5f804674b70 100644 --- a/src/components/color/index.js +++ b/src/components/color/index.js @@ -1,183 +1,271 @@ -'use strict'; +'use strict' -var tinycolor = require('tinycolor2'); -var isNumeric = require('fast-isnumeric'); -var isTypedArray = require('../../lib/array').isTypedArray; +const _color = require('color').default; +const { warn } = require('../../lib/loggers'); +const { background, defaultLine, defaults, lightLine } = require('./attributes'); -var color = module.exports = {}; - -var colorAttrs = require('./attributes'); -color.defaults = colorAttrs.defaults; -var defaultLine = color.defaultLine = colorAttrs.defaultLine; -color.lightLine = colorAttrs.lightLine; -var background = color.background = colorAttrs.background; - -/* - * tinyRGB: turn a tinycolor into an rgb string, but - * unlike the built-in tinycolor.toRgbString this never includes alpha +/** + * Safe wrapper around the `color` library: trims string input and falls back + * to black (with a warning) instead of throwing on invalid input. + * + * @param {*} cstr - color specifier + * @return {Color} color object */ -color.tinyRGB = function(tc) { - var c = tc.toRgb(); - return 'rgb(' + Math.round(c.r) + ', ' + - Math.round(c.g) + ', ' + Math.round(c.b) + ')'; +const color = (cstr) => { + if (typeof cstr === 'string') cstr = cstr.trim(); + try { + return _color(cstr); + } catch (e) { + warn(`Invalid color specifier: "${cstr}". Defaulting to "#000"`); + return _color('#000'); + } }; -color.rgb = function(cstr) { return color.tinyRGB(tinycolor(cstr)); }; +/** + * Convert any color specifier to a normalized `rgb(r, g, b)` string. + * + * @param {*} cstr - color specifier + * @return {String} + */ +const rgb = (cstr) => { + const { r, g, b } = color(cstr).rgb().object(); + return `rgb(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)})`; +}; -color.opacity = function(cstr) { return cstr ? tinycolor(cstr).getAlpha() : 0; }; +/** + * Return the alpha channel of a color (0 if falsy). + * + * @param {*} cstr - color specifier + * @return {Number} + */ +const opacity = (cstr) => (cstr ? color(cstr).alpha() : 0); -color.addOpacity = function(cstr, op) { - var c = tinycolor(cstr).toRgb(); - return 'rgba(' + Math.round(c.r) + ', ' + - Math.round(c.g) + ', ' + Math.round(c.b) + ', ' + op + ')'; +/** + * Build an `rgba(...)` string from a color and an explicit opacity value. + * + * @param {*} cstr - color specifier + * @param {Number} op - opacity in [0, 1] + * @return {String} + */ +const addOpacity = (cstr, op) => { + const c = color(cstr).rgb().object(); + return `rgba(${Math.round(c.r)}, ${Math.round(c.g)}, ${Math.round(c.b)}, ${op})`; }; -// combine two colors into one apparent color -// if back has transparency or is missing, -// color.background is assumed behind it -color.combine = function(front, back) { - var fc = tinycolor(front).toRgb(); - if(fc.a === 1) return tinycolor(front).toRgbString(); - - var bc = tinycolor(back || background).toRgb(); - var bcflat = bc.a === 1 ? bc : { - r: 255 * (1 - bc.a) + bc.r * bc.a, - g: 255 * (1 - bc.a) + bc.g * bc.a, - b: 255 * (1 - bc.a) + bc.b * bc.a - }; - var fcflat = { - r: bcflat.r * (1 - fc.a) + fc.r * fc.a, - g: bcflat.g * (1 - fc.a) + fc.g * fc.a, - b: bcflat.b * (1 - fc.a) + fc.b * fc.a +/** + * Combine two colors into one apparent color by compositing `front` over `back`. + * If `back` is missing or transparent, the module `background` is assumed behind it. + * + * @param {*} front - foreground color specifier + * @param {*} back - background color specifier + * @return {String} resulting `rgb(...)` string + */ +const combine = (front, back) => { + back ||= background; + const fc = color(front).rgb().object(); + fc.alpha ??= 1; + if (fc.alpha === 1) return color(front).rgb().string(); + + const bc = color(back).rgb().object(); + bc.alpha ??= 1; + const bcflat = + bc.alpha === 1 + ? bc + : { + r: 255 * (1 - bc.alpha) + bc.r * bc.alpha, + g: 255 * (1 - bc.alpha) + bc.g * bc.alpha, + b: 255 * (1 - bc.alpha) + bc.b * bc.alpha + }; + + const fcflat = { + r: bcflat.r * (1 - fc.alpha) + fc.r * fc.alpha, + g: bcflat.g * (1 - fc.alpha) + fc.g * fc.alpha, + b: bcflat.b * (1 - fc.alpha) + fc.b * fc.alpha }; - return tinycolor(fcflat).toRgbString(); + + return color(fcflat).rgb().string(); }; -/* - * Linearly interpolate between two colors at a normalized interpolation position (0 to 1). +/** + * Linearly interpolate between two colors at a normalized position (0 to 1). + * Ignores alpha; result is `factor * first + (1 - factor) * second`. * - * Ignores alpha channel values. - * The resulting color is computed as: factor * first + (1 - factor) * second. + * @param {*} first - color specifier + * @param {*} second - color specifier + * @param {Number} factor - interpolation position in [0, 1] + * @return {String} resulting `rgb(...)` string */ -color.interpolate = function(first, second, factor) { - var fc = tinycolor(first).toRgb(); - var sc = tinycolor(second).toRgb(); +const interpolate = (first, second, factor) => { + const fc = color(first).rgb().object(); + const sc = color(second).rgb().object(); - var ic = { + const ic = { r: factor * fc.r + (1 - factor) * sc.r, g: factor * fc.g + (1 - factor) * sc.g, - b: factor * fc.b + (1 - factor) * sc.b, + b: factor * fc.b + (1 - factor) * sc.b }; - return tinycolor(ic).toRgbString(); + return color(ic).rgb().string(); }; -/* - * Create a color that contrasts with cstr. +/** + * Shift a color's HSL lightness additively by `delta` percentage points. + * Positive delta = lighter, negative = darker. Use this instead of the + * underlying library's `lighten`/`darken`, which scale L multiplicatively. * - * If cstr is a dark color, we lighten it; if it's light, we darken. - * - * If lightAmount / darkAmount are used, we adjust by these percentages, - * otherwise we go all the way to white or black. + * @param {*} cstr - color specifier + * @param {Number} delta - lightness shift in HSL percentage points + * @return {Color} adjusted color object */ -color.contrast = function(cstr, lightAmount, darkAmount) { - var tc = tinycolor(cstr); +const adjustLightness = (cstr, delta) => { + const c = color(cstr); + return c.lightness(c.lightness() + delta); +}; - if(tc.getAlpha() !== 1) tc = tinycolor(color.combine(cstr, background)); +/** + * Create a color that contrasts with `cstr`: dark colors are lightened, + * light colors are darkened. Without `lightAmount` / `darkAmount` the + * result goes all the way to the background or defaultLine. + * + * @param {*} cstr - color specifier + * @param {Number} [lightAmount] - lighten percentage when cstr is dark + * @param {Number} [darkAmount] - darken percentage when cstr is light + * @return {String} resulting `rgb(...)` string + */ +const contrast = (cstr, lightAmount, darkAmount) => { + let c = color(cstr); - var newColor = tc.isDark() ? - (lightAmount ? tc.lighten(lightAmount) : background) : - (darkAmount ? tc.darken(darkAmount) : defaultLine); + if (c.alpha() !== 1) c = color(combine(cstr, background)); + const newColor = c.isDark() + ? (lightAmount ? adjustLightness(c, lightAmount) : color(background)) + : (darkAmount ? adjustLightness(c, -darkAmount) : color(defaultLine)); - return newColor.toString(); + return newColor.rgb().string(); }; -color.stroke = function(s, c) { - var tc = tinycolor(c); - s.style({stroke: color.tinyRGB(tc), 'stroke-opacity': tc.getAlpha()}); +/** + * Apply `stroke` and `stroke-opacity` styles to a D3 selection. + * + * @param {Selection} s - D3 selection + * @param {*} cstr - color specifier + */ +const stroke = (s, cstr) => { + const c = color(cstr); + s.style({ stroke: rgb(cstr), 'stroke-opacity': c.alpha() }); }; -color.fill = function(s, c) { - var tc = tinycolor(c); - s.style({ - fill: color.tinyRGB(tc), - 'fill-opacity': tc.getAlpha() - }); +/** + * Apply `fill` and `fill-opacity` styles to a D3 selection. + * + * @param {Selection} s - D3 selection + * @param {*} cstr - color specifier + */ +const fill = (s, cstr) => { + const c = color(cstr); + s.style({ fill: rgb(cstr), 'fill-opacity': c.alpha() }); }; -// search container for colors with the deprecated rgb(fractions) format -// and convert them to rgb(0-255 values) -color.clean = function(container) { - if(!container || typeof container !== 'object') return; - - var keys = Object.keys(container); - var i, j, key, val; - - for(i = 0; i < keys.length; i++) { - key = keys[i]; - val = container[key]; - - if(key.slice(-5) === 'color') { - // only sanitize keys that end in "color" or "colorscale" - - if(Array.isArray(val)) { - for(j = 0; j < val.length; j++) val[j] = cleanOne(val[j]); - } else container[key] = cleanOne(val); - } else if(key.slice(-10) === 'colorscale' && Array.isArray(val)) { - // colorscales have the format [[0, color1], [frac, color2], ... [1, colorN]] - - for(j = 0; j < val.length; j++) { - if(Array.isArray(val[j])) val[j][1] = cleanOne(val[j][1]); - } - } else if(Array.isArray(val)) { - // recurse into arrays of objects, and plain objects - - var el0 = val[0]; - if(!Array.isArray(el0) && el0 && typeof el0 === 'object') { - for(j = 0; j < val.length; j++) color.clean(val[j]); - } - } else if(val && typeof val === 'object' && !isTypedArray(val)) color.clean(val); +/** + * Test whether two color specifiers resolve to the same `rgb(...)` string. + * + * @param {*} cstr1 - color specifier + * @param {*} cstr2 - color specifier + * @return {Boolean} + */ +const equals = (cstr1, cstr2) => !!(cstr1 && cstr2 && color(cstr1).rgb().string() === color(cstr2).rgb().string()); + +/** + * Test whether a string is a valid color specifier (does not throw). + * + * @param {*} cstr + * @return {Boolean} + */ +const isValid = (cstr) => { + if (typeof cstr !== 'string') return false; + try { + return !!_color(cstr.trim()); + } catch { + return false; } }; -function cleanOne(val) { - if(isNumeric(val) || typeof val !== 'string') return val; - - var valTrim = val.trim(); - if(valTrim.slice(0, 3) !== 'rgb') return val; - - var match = valTrim.match(/^rgba?\s*\(([^()]*)\)$/); - if(!match) return val; - - var parts = match[1].trim().split(/\s*[\s,]\s*/); - var rgba = valTrim.charAt(3) === 'a' && parts.length === 4; - if(!rgba && parts.length !== 3) return val; - - for(var i = 0; i < parts.length; i++) { - if(!parts[i].length) return val; - parts[i] = Number(parts[i]); - - if(!(parts[i] >= 0)) { - // all parts must be non-negative numbers - - return val; - } - - if(i === 3) { - // alpha>1 gets clipped to 1 - - if(parts[i] > 1) parts[i] = 1; - } else if(parts[i] >= 1) { - // r, g, b must be < 1 (ie 1 itself is not allowed) +/** + * Brighten a color by adding a fixed amount to each RGB channel. + * Unlike `lighten`, this works in RGB space, not HSL. Alpha is preserved. + * + * @param {*} cstr - color specifier + * @param {Number} [amount=10] - percent in [-100, 100] + * @return {String} resulting `rgb(...)` / `rgba(...)` string + */ +const brighten = (cstr, amount) => { + amount = amount === 0 ? 0 : amount || 10; + const c = color(cstr).rgb().object(); + const adj = Math.round(255 * (amount / 100)); + return color({ + r: Math.max(0, Math.min(255, c.r + adj)), + g: Math.max(0, Math.min(255, c.g + adj)), + b: Math.max(0, Math.min(255, c.b + adj)) + }) + .alpha(c.alpha ?? 1) + .rgb() + .string(); +}; - return val; +/** + * Mix two colors by `weight` percent (0 = all `cstr1`, 100 = all `cstr2`). + * + * @param {*} cstr1 - color specifier + * @param {*} cstr2 - color specifier + * @param {Number} weight - percent in [0, 100] + * @return {String} resulting `rgb(...)` string + */ +const mix = (cstr1, cstr2, weight) => + color(cstr1) + .mix(color(cstr2), weight / 100) + .rgb() + .string(); + +/** + * Pick the color from `colorList` with the highest contrast ratio against + * `baseColor`. Defaults to choosing between black and white. + * + * @param {*} baseColor - color specifier to contrast against + * @param {Array} [colorList=['#000', '#fff']] - candidate color specifiers + * @return {String} resulting `rgb(...)` string + */ +const mostReadable = (baseColor, colorList = ['#000', '#fff']) => { + let bestColor; + let bestContrast = -Infinity; + + for (const cstr of colorList) { + const contrastRatio = color(baseColor).contrast(color(cstr)); + if (contrastRatio > bestContrast) { + bestContrast = contrastRatio; + bestColor = color(cstr).rgb().string(); } } - var rgbStr = Math.round(parts[0] * 255) + ', ' + - Math.round(parts[1] * 255) + ', ' + - Math.round(parts[2] * 255); + return bestColor; +}; - if(rgba) return 'rgba(' + rgbStr + ', ' + parts[3] + ')'; - return 'rgb(' + rgbStr + ')'; -} +module.exports = { + addOpacity, + adjustLightness, + background, + brighten, + color, + combine, + contrast, + defaultLine, + defaults, + equals, + fill, + interpolate, + isValid, + lightLine, + mix, + mostReadable, + opacity, + rgb, + stroke +}; diff --git a/src/components/colorbar/attributes.js b/src/components/colorbar/attributes.js index 3a562b516a0..384701253a6 100644 --- a/src/components/colorbar/attributes.js +++ b/src/components/colorbar/attributes.js @@ -5,227 +5,233 @@ var fontAttrs = require('../../plots/font_attributes'); var extendFlat = require('../../lib/extend').extendFlat; var overrideAll = require('../../plot_api/edit_types').overrideAll; - -module.exports = overrideAll({ - orientation: { - valType: 'enumerated', - values: ['h', 'v'], - dflt: 'v', - description: 'Sets the orientation of the colorbar.' - }, - thicknessmode: { - valType: 'enumerated', - values: ['fraction', 'pixels'], - dflt: 'pixels', - description: [ - 'Determines whether this color bar\'s thickness', - '(i.e. the measure in the constant color direction)', - 'is set in units of plot *fraction* or in *pixels*.', - 'Use `thickness` to set the value.' - ].join(' ') - }, - thickness: { - valType: 'number', - min: 0, - dflt: 30, - description: [ - 'Sets the thickness of the color bar', - 'This measure excludes the size of the padding, ticks and labels.' - ].join(' ') - }, - lenmode: { - valType: 'enumerated', - values: ['fraction', 'pixels'], - dflt: 'fraction', - description: [ - 'Determines whether this color bar\'s length', - '(i.e. the measure in the color variation direction)', - 'is set in units of plot *fraction* or in *pixels.', - 'Use `len` to set the value.' - ].join(' ') - }, - len: { - valType: 'number', - min: 0, - dflt: 1, - description: [ - 'Sets the length of the color bar', - 'This measure excludes the padding of both ends.', - 'That is, the color bar length is this length minus the', - 'padding on both ends.' - ].join(' ') - }, - x: { - valType: 'number', - description: [ - 'Sets the x position with respect to `xref` of the color bar (in plot fraction).', - 'When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and', - '0.5 when `orientation` is *h*.', - 'When `xref` is *container*, defaults to *1* when `orientation` is *v* and', - '0.5 when `orientation` is *h*.', - 'Must be between *0* and *1* if `xref` is *container*', - 'and between *-2* and *3* if `xref` is *paper*.' - ].join(' ') - }, - xref: { - valType: 'enumerated', - dflt: 'paper', - values: ['container', 'paper'], - editType: 'layoutstyle', - description: [ - 'Sets the container `x` refers to.', - '*container* spans the entire `width` of the plot.', - '*paper* refers to the width of the plotting area only.' - ].join(' ') - }, - xanchor: { - valType: 'enumerated', - values: ['left', 'center', 'right'], - description: [ - 'Sets this color bar\'s horizontal position anchor.', - 'This anchor binds the `x` position to the *left*, *center*', - 'or *right* of the color bar.', - 'Defaults to *left* when `orientation` is *v* and', - '*center* when `orientation` is *h*.' - ].join(' ') - }, - xpad: { - valType: 'number', - min: 0, - dflt: 10, - description: 'Sets the amount of padding (in px) along the x direction.' - }, - y: { - valType: 'number', - description: [ - 'Sets the y position with respect to `yref` of the color bar (in plot fraction).', - 'When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and', - '1.02 when `orientation` is *h*.', - 'When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and', - '1 when `orientation` is *h*.', - 'Must be between *0* and *1* if `yref` is *container*', - 'and between *-2* and *3* if `yref` is *paper*.' - ].join(' ') - }, - yref: { - valType: 'enumerated', - dflt: 'paper', - values: ['container', 'paper'], - editType: 'layoutstyle', - description: [ - 'Sets the container `y` refers to.', - '*container* spans the entire `height` of the plot.', - '*paper* refers to the height of the plotting area only.' - ].join(' '), - }, - yanchor: { - valType: 'enumerated', - values: ['top', 'middle', 'bottom'], - description: [ - 'Sets this color bar\'s vertical position anchor', - 'This anchor binds the `y` position to the *top*, *middle*', - 'or *bottom* of the color bar.', - 'Defaults to *middle* when `orientation` is *v* and', - '*bottom* when `orientation` is *h*.' - ].join(' ') - }, - ypad: { - valType: 'number', - min: 0, - dflt: 10, - description: 'Sets the amount of padding (in px) along the y direction.' - }, - // a possible line around the bar itself - outlinecolor: axesAttrs.linecolor, - outlinewidth: axesAttrs.linewidth, - // Should outlinewidth have {dflt: 0} ? - // another possible line outside the padding and tick labels - bordercolor: axesAttrs.linecolor, - borderwidth: { - valType: 'number', - min: 0, - dflt: 0, - description: [ - 'Sets the width (in px) or the border enclosing this color bar.' - ].join(' ') - }, - bgcolor: { - valType: 'color', - dflt: 'rgba(0,0,0,0)', - description: 'Sets the color of padded area.' - }, - // tick and title properties named and function exactly as in axes - tickmode: axesAttrs.minor.tickmode, - nticks: axesAttrs.nticks, - tick0: axesAttrs.tick0, - dtick: axesAttrs.dtick, - tickvals: axesAttrs.tickvals, - ticktext: axesAttrs.ticktext, - ticks: extendFlat({}, axesAttrs.ticks, {dflt: ''}), - ticklabeloverflow: extendFlat({}, axesAttrs.ticklabeloverflow, { - description: [ - 'Determines how we handle tick labels that would overflow either the graph div or the domain of the axis.', - 'The default value for inside tick labels is *hide past domain*.', - 'In other cases the default is *hide past div*.' - ].join(' ') - }), - - // ticklabelposition: not used directly, as values depend on orientation - // left/right options are for x axes, and top/bottom options are for y axes - ticklabelposition: { - valType: 'enumerated', - values: [ - 'outside', 'inside', - 'outside top', 'inside top', - 'outside left', 'inside left', - 'outside right', 'inside right', - 'outside bottom', 'inside bottom' - ], - dflt: 'outside', - description: [ - 'Determines where tick labels are drawn relative to the ticks.', - 'Left and right options are used when `orientation` is *h*,', - 'top and bottom when `orientation` is *v*.' - ].join(' ') - }, - - ticklen: axesAttrs.ticklen, - tickwidth: axesAttrs.tickwidth, - tickcolor: axesAttrs.tickcolor, - ticklabelstep: axesAttrs.ticklabelstep, - showticklabels: axesAttrs.showticklabels, - labelalias: axesAttrs.labelalias, - tickfont: fontAttrs({ - description: 'Sets the color bar\'s tick label font' - }), - tickangle: axesAttrs.tickangle, - tickformat: axesAttrs.tickformat, - tickformatstops: axesAttrs.tickformatstops, - tickprefix: axesAttrs.tickprefix, - showtickprefix: axesAttrs.showtickprefix, - ticksuffix: axesAttrs.ticksuffix, - showticksuffix: axesAttrs.showticksuffix, - separatethousands: axesAttrs.separatethousands, - exponentformat: axesAttrs.exponentformat, - minexponent: axesAttrs.minexponent, - showexponent: axesAttrs.showexponent, - title: { - text: { - valType: 'string', - description: 'Sets the title of the color bar.' - }, - font: fontAttrs({ - description: 'Sets this color bar\'s title font.' +module.exports = overrideAll( + { + orientation: { + valType: 'enumerated', + values: ['h', 'v'], + dflt: 'v', + description: 'Sets the orientation of the colorbar.' + }, + thicknessmode: { + valType: 'enumerated', + values: ['fraction', 'pixels'], + dflt: 'pixels', + description: [ + "Determines whether this color bar's thickness", + '(i.e. the measure in the constant color direction)', + 'is set in units of plot *fraction* or in *pixels*.', + 'Use `thickness` to set the value.' + ].join(' ') + }, + thickness: { + valType: 'number', + min: 0, + dflt: 30, + description: [ + 'Sets the thickness of the color bar', + 'This measure excludes the size of the padding, ticks and labels.' + ].join(' ') + }, + lenmode: { + valType: 'enumerated', + values: ['fraction', 'pixels'], + dflt: 'fraction', + description: [ + "Determines whether this color bar's length", + '(i.e. the measure in the color variation direction)', + 'is set in units of plot *fraction* or in *pixels.', + 'Use `len` to set the value.' + ].join(' ') + }, + len: { + valType: 'number', + min: 0, + dflt: 1, + description: [ + 'Sets the length of the color bar', + 'This measure excludes the padding of both ends.', + 'That is, the color bar length is this length minus the', + 'padding on both ends.' + ].join(' ') + }, + x: { + valType: 'number', + description: [ + 'Sets the x position with respect to `xref` of the color bar (in plot fraction).', + 'When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and', + '0.5 when `orientation` is *h*.', + 'When `xref` is *container*, defaults to *1* when `orientation` is *v* and', + '0.5 when `orientation` is *h*.', + 'Must be between *0* and *1* if `xref` is *container*', + 'and between *-2* and *3* if `xref` is *paper*.' + ].join(' ') + }, + xref: { + valType: 'enumerated', + dflt: 'paper', + values: ['container', 'paper'], + editType: 'layoutstyle', + description: [ + 'Sets the container `x` refers to.', + '*container* spans the entire `width` of the plot.', + '*paper* refers to the width of the plotting area only.' + ].join(' ') + }, + xanchor: { + valType: 'enumerated', + values: ['left', 'center', 'right'], + description: [ + "Sets this color bar's horizontal position anchor.", + 'This anchor binds the `x` position to the *left*, *center*', + 'or *right* of the color bar.', + 'Defaults to *left* when `orientation` is *v* and', + '*center* when `orientation` is *h*.' + ].join(' ') + }, + xpad: { + valType: 'number', + min: 0, + dflt: 10, + description: 'Sets the amount of padding (in px) along the x direction.' + }, + y: { + valType: 'number', + description: [ + 'Sets the y position with respect to `yref` of the color bar (in plot fraction).', + 'When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and', + '1.02 when `orientation` is *h*.', + 'When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and', + '1 when `orientation` is *h*.', + 'Must be between *0* and *1* if `yref` is *container*', + 'and between *-2* and *3* if `yref` is *paper*.' + ].join(' ') + }, + yref: { + valType: 'enumerated', + dflt: 'paper', + values: ['container', 'paper'], + editType: 'layoutstyle', + description: [ + 'Sets the container `y` refers to.', + '*container* spans the entire `height` of the plot.', + '*paper* refers to the height of the plotting area only.' + ].join(' ') + }, + yanchor: { + valType: 'enumerated', + values: ['top', 'middle', 'bottom'], + description: [ + "Sets this color bar's vertical position anchor", + 'This anchor binds the `y` position to the *top*, *middle*', + 'or *bottom* of the color bar.', + 'Defaults to *middle* when `orientation` is *v* and', + '*bottom* when `orientation` is *h*.' + ].join(' ') + }, + ypad: { + valType: 'number', + min: 0, + dflt: 10, + description: 'Sets the amount of padding (in px) along the y direction.' + }, + // a possible line around the bar itself + outlinecolor: axesAttrs.linecolor, + outlinewidth: axesAttrs.linewidth, + // Should outlinewidth have {dflt: 0} ? + // another possible line outside the padding and tick labels + bordercolor: axesAttrs.linecolor, + borderwidth: { + valType: 'number', + min: 0, + dflt: 0, + description: ['Sets the width (in px) or the border enclosing this color bar.'].join(' ') + }, + bgcolor: { + valType: 'color', + dflt: 'rgba(0,0,0,0)', + description: 'Sets the color of padded area.' + }, + // tick and title properties named and function exactly as in axes + tickmode: axesAttrs.minor.tickmode, + nticks: axesAttrs.nticks, + tick0: axesAttrs.tick0, + dtick: axesAttrs.dtick, + tickvals: axesAttrs.tickvals, + ticktext: axesAttrs.ticktext, + ticks: extendFlat({}, axesAttrs.ticks, { dflt: '' }), + ticklabeloverflow: extendFlat({}, axesAttrs.ticklabeloverflow, { + description: [ + 'Determines how we handle tick labels that would overflow either the graph div or the domain of the axis.', + 'The default value for inside tick labels is *hide past domain*.', + 'In other cases the default is *hide past div*.' + ].join(' ') }), - side: { + + // ticklabelposition: not used directly, as values depend on orientation + // left/right options are for x axes, and top/bottom options are for y axes + ticklabelposition: { valType: 'enumerated', - values: ['right', 'top', 'bottom'], + values: [ + 'outside', + 'inside', + 'outside top', + 'inside top', + 'outside left', + 'inside left', + 'outside right', + 'inside right', + 'outside bottom', + 'inside bottom' + ], + dflt: 'outside', description: [ - 'Determines the location of color bar\'s title', - 'with respect to the color bar.', - 'Defaults to *top* when `orientation` if *v* and ', - 'defaults to *right* when `orientation` if *h*.', + 'Determines where tick labels are drawn relative to the ticks.', + 'Left and right options are used when `orientation` is *h*,', + 'top and bottom when `orientation` is *v*.' ].join(' ') + }, + + ticklen: axesAttrs.ticklen, + tickwidth: axesAttrs.tickwidth, + tickcolor: axesAttrs.tickcolor, + ticklabelstep: axesAttrs.ticklabelstep, + showticklabels: axesAttrs.showticklabels, + labelalias: axesAttrs.labelalias, + tickfont: fontAttrs({ + description: "Sets the color bar's tick label font" + }), + tickangle: axesAttrs.tickangle, + tickformat: axesAttrs.tickformat, + tickformatstops: axesAttrs.tickformatstops, + tickprefix: axesAttrs.tickprefix, + showtickprefix: axesAttrs.showtickprefix, + ticksuffix: axesAttrs.ticksuffix, + showticksuffix: axesAttrs.showticksuffix, + separatethousands: axesAttrs.separatethousands, + exponentformat: axesAttrs.exponentformat, + minexponent: axesAttrs.minexponent, + showexponent: axesAttrs.showexponent, + title: { + text: { + valType: 'string', + description: 'Sets the title of the color bar.' + }, + font: fontAttrs({ + description: "Sets this color bar's title font." + }), + side: { + valType: 'enumerated', + values: ['right', 'top', 'bottom'], + description: [ + "Determines the location of color bar's title", + 'with respect to the color bar.', + 'Defaults to *top* when `orientation` is *v* and', + 'defaults to *right* when `orientation` is *h*.' + ].join(' ') + } } }, -}, 'colorbars', 'from-root'); + 'colorbars', + 'from-root' +); diff --git a/src/components/colorbar/draw.js b/src/components/colorbar/draw.js index 3fe5a5e9ce3..879088b9057 100644 --- a/src/components/colorbar/draw.js +++ b/src/components/colorbar/draw.js @@ -1,7 +1,6 @@ 'use strict'; var d3 = require('@plotly/d3'); -var tinycolor = require('tinycolor2'); var Plots = require('../../plots/plots'); var Registry = require('../../registry'); @@ -548,10 +547,9 @@ function drawColorBar(g, opts, gd) { if(opts._fillgradient) { Drawing.gradient(fillEl, gd, opts._id, isVertical ? 'vertical' : 'horizontalreversed', opts._fillgradient, 'fill'); } else { - // tinycolor can't handle exponents and - // at this scale, removing it makes no difference. + // The color library can't handle exponents and at this scale, removing it makes no difference. var colorString = fillColormap(d).replace('e-', ''); - fillEl.attr('fill', tinycolor(colorString).toHexString()); + fillEl.attr('fill', Color.color(colorString).hex()); } }); @@ -716,8 +714,8 @@ function drawColorBar(g, opts, gd) { if(!isVertical && ( borderwidth || ( - tinycolor(bgcolor).getAlpha() && - !tinycolor.equals(fullLayout.paper_bgcolor, bgcolor) + Color.opacity(bgcolor) && + !Color.equals(fullLayout.paper_bgcolor, bgcolor) ) )) { // for horizontal colorbars when there is a border line or having different background color diff --git a/src/components/colorscale/attributes.js b/src/components/colorscale/attributes.js index 6bfaac6be15..cd41e6ecbe1 100644 --- a/src/components/colorscale/attributes.js +++ b/src/components/colorscale/attributes.js @@ -2,7 +2,7 @@ var colorbarAttrs = require('../colorbar/attributes'); var counterRegex = require('../../lib/regex').counter; -var sortObjectKeys = require('../../lib/sort_object_keys'); +var sortObjectKeys = require('../../lib/sort_object_keys').default; var palettes = require('./scales.js').scales; var paletteStr = sortObjectKeys(palettes); @@ -59,26 +59,24 @@ module.exports = function colorScaleAttrs(context, opts) { opts = opts || {}; var cLetter = opts.cLetter || 'c'; - var onlyIfNumerical = ('onlyIfNumerical' in opts) ? opts.onlyIfNumerical : Boolean(context); - var noScale = ('noScale' in opts) ? opts.noScale : context === 'marker.line'; - var showScaleDflt = ('showScaleDflt' in opts) ? opts.showScaleDflt : cLetter === 'z'; + var onlyIfNumerical = 'onlyIfNumerical' in opts ? opts.onlyIfNumerical : Boolean(context); + var noScale = 'noScale' in opts ? opts.noScale : context === 'marker.line'; + var showScaleDflt = 'showScaleDflt' in opts ? opts.showScaleDflt : cLetter === 'z'; var colorscaleDflt = typeof opts.colorscaleDflt === 'string' ? palettes[opts.colorscaleDflt] : null; var editTypeOverride = opts.editTypeOverride || ''; - var contextHead = context ? (context + '.') : ''; + var contextHead = context ? context + '.' : ''; var colorAttr, colorAttrFull; - if('colorAttr' in opts) { + if ('colorAttr' in opts) { colorAttr = opts.colorAttr; colorAttrFull = opts.colorAttr; } else { - colorAttr = {z: 'z', c: 'color'}[cLetter]; + colorAttr = { z: 'z', c: 'color' }[cLetter]; colorAttrFull = 'in ' + code(contextHead + colorAttr); } - var effectDesc = onlyIfNumerical ? - ' Has an effect only if ' + colorAttrFull + ' is set to a numerical array.' : - ''; + var effectDesc = onlyIfNumerical ? ' Has an effect only if ' + colorAttrFull + ' is set to a numerical array.' : ''; var auto = cLetter + 'auto'; var min = cLetter + 'min'; @@ -95,21 +93,24 @@ module.exports = function colorScaleAttrs(context, opts) { var attrs = {}; - if(colorAttr === 'color') { + if (colorAttr === 'color') { attrs.color = { valType: 'color', arrayOk: true, editType: editTypeOverride || 'style', description: [ - 'Sets the', context, 'color.', + 'Sets the', + context, + 'color.', 'It accepts either a specific color', 'or an array of numbers that are mapped to the colorscale', 'relative to the max and min values of the array or relative to', - minmaxFull, 'if set.' + minmaxFull, + 'if set.' ].join(' ') }; - if(opts.anim) { + if (opts.anim) { attrs.color.anim = true; } } @@ -123,7 +124,9 @@ module.exports = function colorScaleAttrs(context, opts) { 'Determines whether or not the color domain is computed', 'with respect to the input data (here ' + colorAttrFull + ') or the bounds set in', minmaxFull + effectDesc, - 'Defaults to `false` when', minmaxFull, 'are set by the user.' + 'Defaults to `false` when', + minmaxFull, + 'are set by the user.' ].join(' ') }; @@ -134,8 +137,11 @@ module.exports = function colorScaleAttrs(context, opts) { impliedEdits: minmaxImpliedEdits, description: [ 'Sets the lower bound of the color domain.' + effectDesc, - 'Value should have the same units as', colorAttrFull, - 'and if set,', maxFull, 'must be set as well.' + 'Value should have the same units as', + colorAttrFull, + 'and if set,', + maxFull, + 'must be set as well.' ].join(' ') }; @@ -146,8 +152,11 @@ module.exports = function colorScaleAttrs(context, opts) { impliedEdits: minmaxImpliedEdits, description: [ 'Sets the upper bound of the color domain.' + effectDesc, - 'Value should have the same units as', colorAttrFull, - 'and if set,', minFull, 'must be set as well.' + 'Value should have the same units as', + colorAttrFull, + 'and if set,', + minFull, + 'must be set as well.' ].join(' ') }; @@ -157,10 +166,16 @@ module.exports = function colorScaleAttrs(context, opts) { editType: 'calc', impliedEdits: autoImpliedEdits, description: [ - 'Sets the mid-point of the color domain by scaling', minFull, - 'and/or', maxFull, 'to be equidistant to this point.' + effectDesc, - 'Value should have the same units as', colorAttrFull + '.', - 'Has no effect when', autoFull, 'is `false`.' + 'Sets the mid-point of the color domain by scaling', + minFull, + 'and/or', + maxFull, + 'to be equidistant to this point.' + effectDesc, + 'Value should have the same units as', + colorAttrFull + '.', + 'Has no effect when', + autoFull, + 'is `false`.' ].join(' ') }; @@ -168,17 +183,18 @@ module.exports = function colorScaleAttrs(context, opts) { valType: 'colorscale', editType: 'calc', dflt: colorscaleDflt, - impliedEdits: {autocolorscale: false}, + impliedEdits: { autocolorscale: false }, description: [ 'Sets the colorscale.' + effectDesc, 'The colorscale must be an array containing', 'arrays mapping a normalized value to an', - 'rgb, rgba, hex, hsl, hsv, or named color string.', + 'rgb, rgba, hex, hsl, hsla, hwb, or named color string.', 'At minimum, a mapping for the lowest (0) and highest (1)', 'values are required. For example,', - '`[[0, \'rgb(0,0,255)\'], [1, \'rgb(255,0,0)\']]`.', + "`[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`.", 'To control the bounds of the colorscale in color space,', - 'use', minmaxFull + '.', + 'use', + minmaxFull + '.', 'Alternatively, `colorscale` may be a palette name string', 'of the following list: ' + paletteStr + '.' ].join(' ') @@ -189,10 +205,11 @@ module.exports = function colorScaleAttrs(context, opts) { // gets overrode in 'heatmap' & 'surface' for backwards comp. dflt: opts.autoColorDflt === false ? false : true, editType: 'calc', - impliedEdits: {colorscale: undefined}, + impliedEdits: { colorscale: undefined }, description: [ 'Determines whether the colorscale is a default palette (`autocolorscale: true`)', - 'or the palette determined by', code(contextHead + 'colorscale') + '.' + effectDesc, + 'or the palette determined by', + code(contextHead + 'colorscale') + '.' + effectDesc, 'In case `colorscale` is unspecified or `autocolorscale` is true, the default', 'palette will be chosen according to whether numbers in the `color` array are', 'all positive, all negative or mixed.' @@ -205,25 +222,27 @@ module.exports = function colorScaleAttrs(context, opts) { editType: 'plot', description: [ 'Reverses the color mapping if true.' + effectDesc, - 'If true,', minFull, 'will correspond to the last color', - 'in the array and', maxFull, 'will correspond to the first color.' + 'If true,', + minFull, + 'will correspond to the last color', + 'in the array and', + maxFull, + 'will correspond to the first color.' ].join(' ') }; - if(!noScale) { + if (!noScale) { attrs.showscale = { valType: 'boolean', dflt: showScaleDflt, editType: 'calc', - description: [ - 'Determines whether or not a colorbar is displayed for this trace.' + effectDesc - ].join(' ') + description: ['Determines whether or not a colorbar is displayed for this trace.' + effectDesc].join(' ') }; attrs.colorbar = colorbarAttrs; } - if(!opts.noColorAxis) { + if (!opts.noColorAxis) { attrs.coloraxis = { valType: 'subplotid', regex: counterRegex('coloraxis'), diff --git a/src/components/colorscale/helpers.js b/src/components/colorscale/helpers.js index bc476e0a9b5..275b134fc35 100644 --- a/src/components/colorscale/helpers.js +++ b/src/components/colorscale/helpers.js @@ -1,7 +1,6 @@ 'use strict'; var d3 = require('@plotly/d3'); -var tinycolor = require('tinycolor2'); var isNumeric = require('fast-isnumeric'); var Lib = require('../../lib'); @@ -167,8 +166,8 @@ function makeColorScaleFunc(specs, opts) { var _range = new Array(N); for(var i = 0; i < N; i++) { - var rgba = tinycolor(range[i]).toRgb(); - _range[i] = [rgba.r, rgba.g, rgba.b, rgba.a]; + const { r, g, b, alpha = 1 } = Color.color(range[i]).rgb().object(); + _range[i] = [r, g, b, alpha]; } var _sclFunc = d3.scale.linear() @@ -189,14 +188,14 @@ function makeColorScaleFunc(specs, opts) { } else if(returnArray) { sclFunc = function(v) { if(isNumeric(v)) return _sclFunc(v); - else if(tinycolor(v).isValid()) return v; - else return Color.defaultLine; + if(Color.isValid(v)) return v; + return Color.defaultLine; }; } else { sclFunc = function(v) { if(isNumeric(v)) return colorArray2rbga(_sclFunc(v)); - else if(tinycolor(v).isValid()) return v; - else return Color.defaultLine; + if(Color.isValid(v)) return v; + return Color.defaultLine; }; } @@ -216,10 +215,10 @@ function colorArray2rbga(colorArray) { r: colorArray[0], g: colorArray[1], b: colorArray[2], - a: colorArray[3] + alpha: colorArray[3] }; - return tinycolor(colorObj).toRgbString(); + return Color.color(colorObj).rgb().string(); } module.exports = { diff --git a/src/components/colorscale/scales.js b/src/components/colorscale/scales.js index 7230f458bc7..c2cef9f44ff 100644 --- a/src/components/colorscale/scales.js +++ b/src/components/colorscale/scales.js @@ -1,6 +1,6 @@ 'use strict'; -var tinycolor = require('tinycolor2'); +const Color = require('../color'); var scales = { Greys: [ @@ -170,7 +170,7 @@ function isValidScaleArray(scl) { for(var i = 0; i < scl.length; i++) { var si = scl[i]; - if(si.length !== 2 || +si[0] < highestVal || !tinycolor(si[1]).isValid()) { + if(si.length !== 2 || +si[0] < highestVal || !Color.isValid(si[1])) { return false; } diff --git a/src/components/drawing/index.js b/src/components/drawing/index.js index 861df3131a5..748b1a91e60 100644 --- a/src/components/drawing/index.js +++ b/src/components/drawing/index.js @@ -4,7 +4,6 @@ var d3 = require('@plotly/d3'); var Lib = require('../../lib'); var numberFormat = Lib.numberFormat; var isNumeric = require('fast-isnumeric'); -var tinycolor = require('tinycolor2'); var Registry = require('../../registry'); var Color = require('../color'); @@ -515,11 +514,11 @@ function gradientWithBounds(sel, gd, gradientID, type, colorscale, prop, start, stops.enter().append('stop'); stops.each(function (d) { - var tc = tinycolor(d[1]); + var c = Color.color(d[1]); d3.select(this).attr({ offset: d[0] + '%', - 'stop-color': Color.tinyRGB(tc), - 'stop-opacity': tc.getAlpha() + 'stop-color': Color.rgb(d[1]), + 'stop-opacity': c.alpha() }); }); }); @@ -585,9 +584,9 @@ drawing.pattern = function ( var patternTag; var patternAttrs = {}; - var fgC = tinycolor(fgcolor); - var fgRGB = Color.tinyRGB(fgC); - var fgAlpha = fgC.getAlpha(); + var fgC = Color.color(fgcolor); + var fgRGB = Color.rgb(fgcolor); + var fgAlpha = fgC.alpha(); var opacity = fgopacity * fgAlpha; switch (shape) { @@ -820,9 +819,9 @@ drawing.pattern = function ( }); if (bgcolor) { - var bgC = tinycolor(bgcolor); - var bgRGB = Color.tinyRGB(bgC); - var bgAlpha = bgC.getAlpha(); + var bgC = Color.color(bgcolor); + var bgRGB = Color.rgb(bgcolor); + var bgAlpha = bgC.alpha(); var rects = el.selectAll('rect').data([0]); rects.exit().remove(); @@ -1866,7 +1865,10 @@ function getMarkerAngle(d, trace) { if (angle === undefined) { angle = trace.marker.angle; - if (!angle || Lib.isArrayOrTypedArray(angle)) { + // For scattermap traces, `trace.marker.angle` defaults to 'auto', + // which is meaningful for the MapLibre code but not for plotly.js itself. + // Therefore we need to coerce any non-numeric values to 0 (no rotation). + if (!isNumeric(angle) || Lib.isArrayOrTypedArray(angle)) { angle = 0; } } diff --git a/src/components/fx/helpers.js b/src/components/fx/helpers.js index 57c901313a8..d3d2530bccb 100644 --- a/src/components/fx/helpers.js +++ b/src/components/fx/helpers.js @@ -122,17 +122,7 @@ exports.makeEventData = function (pt, trace, cd) { pointNumber: pointNumber }; - if (trace._indexToPoints) { - var pointIndices = trace._indexToPoints[pointNumber]; - - if (pointIndices.length === 1) { - out.pointIndex = pointIndices[0]; - } else { - out.pointIndices = pointIndices; - } - } else { - out.pointIndex = pointNumber; - } + out.pointIndex = pointNumber; if (trace._module.eventData) { out = trace._module.eventData(out, pt, trace, cd, pointNumber); diff --git a/src/components/fx/hover.js b/src/components/fx/hover.js index 20715d2dda4..beed6f0e42f 100644 --- a/src/components/fx/hover.js +++ b/src/components/fx/hover.js @@ -2,7 +2,6 @@ var d3 = require('@plotly/d3'); var isNumeric = require('fast-isnumeric'); -var tinycolor = require('tinycolor2'); var Lib = require('../../lib'); var pushUnique = Lib.pushUnique; @@ -2271,7 +2270,7 @@ function createSpikelines(gd, closestPoints, opts) { hLinePointY = ya._offset + hLinePoint.y; } var dfltHLineColor = - tinycolor.readability(hLinePoint.color, contrastColor) < 1.5 + Color.color(hLinePoint.color).contrast(Color.color(contrastColor)) < 1.5 ? Color.contrast(contrastColor) : hLinePoint.color; var yMode = ya.spikemode; @@ -2354,8 +2353,9 @@ function createSpikelines(gd, closestPoints, opts) { vLinePointX = xa._offset + vLinePoint.x; vLinePointY = ya._offset + vLinePoint.y; } + var dfltVLineColor = - tinycolor.readability(vLinePoint.color, contrastColor) < 1.5 + Color.color(vLinePoint.color).contrast(Color.color(contrastColor)) < 1.5 ? Color.contrast(contrastColor) : vLinePoint.color; var xMode = xa.spikemode; diff --git a/src/components/legend/draw.js b/src/components/legend/draw.js index cf6439f0cf8..707f2a77364 100644 --- a/src/components/legend/draw.js +++ b/src/components/legend/draw.js @@ -111,7 +111,6 @@ function drawOne(gd, opts) { var shapeLegend = { _isShape: true, - _fullInput: shape, index: shape._index, name: shape.name || shape.label.text || ('shape ' + shape._index), legend: shape.legend, @@ -599,12 +598,11 @@ function drawTexts(g, gd, legendObj) { this.text(ensureLength(newName, maxNameLength)) .call(textLayout, g, gd, legendObj); - var fullInput = legendItem.trace._fullInput || {}; var update = {}; update.name = newName; - if(fullInput._isShape) { + if(legendItem.trace._isShape) { return Registry.call('_guiRelayout', gd, 'shapes[' + trace.index + '].name', update.name); } else { return Registry.call('_guiRestyle', gd, update, trace.index); diff --git a/src/components/legend/handle_click.js b/src/components/legend/handle_click.js index be8d7c533b3..6170f03bf8b 100644 --- a/src/components/legend/handle_click.js +++ b/src/components/legend/handle_click.js @@ -50,7 +50,7 @@ exports.handleItemClick = function handleItemClick(g, gd, legendObj, mode) { var fullTrace = legendItem.trace; if (fullTrace._isShape) { - fullTrace = fullTrace._fullInput; + fullTrace = fullLayout.shapes[fullTrace.index]; } var legendgroup = fullTrace.legendgroup; @@ -92,15 +92,14 @@ exports.handleItemClick = function handleItemClick(g, gd, legendObj, mode) { function setVisibility(fullTrace, visibility) { if (legendItem.groupTitle && !toggleGroup) return; - var fullInput = fullTrace._fullInput || fullTrace; - var isShape = fullInput._isShape; - var index = fullInput.index; - if (index === undefined) index = fullInput._index; + var isShape = fullTrace._isShape; + var index = fullTrace.index; + if (index === undefined) index = fullTrace._index; // false -> false (not possible since will not be visible in legend) // true -> legendonly // legendonly -> true - var nextVisibility = fullInput.visible === false ? false : visibility; + var nextVisibility = fullTrace.visible === false ? false : visibility; if (isShape) { insertShapesUpdate(index, nextVisibility); @@ -111,10 +110,7 @@ exports.handleItemClick = function handleItemClick(g, gd, legendObj, mode) { var thisLegend = fullTrace.legend; - var fullInput = fullTrace._fullInput; - var isShape = fullInput && fullInput._isShape; - - if (!isShape && Registry.traceIs(fullTrace, 'pie-like')) { + if (!fullTrace._isShape && Registry.traceIs(fullTrace, 'pie-like')) { var thisLabel = legendItem.label; var thisLabelIndex = hiddenSlices.indexOf(thisLabel); diff --git a/src/components/legend/style.js b/src/components/legend/style.js index d2b3350c0c8..c420b5e0278 100644 --- a/src/components/legend/style.js +++ b/src/components/legend/style.js @@ -207,13 +207,16 @@ module.exports = function style(s, gd, legend) { if (showMarker) { dEdit.mc = boundVal('marker.color', pickFirst); - dEdit.mx = boundVal('marker.symbol', pickFirst); + // Scattermap traces use marker.symbol to specify the Maki icon used in + // the map itself, which usually doesn't correspond to a valid + // Plotly symbol. Always draw a circle so the swatch is consistent + // across symbols rather than silently mismatched. + var isScattermapTrace = trace.type === 'scattermap' || trace.type === 'scattermapbox'; + dEdit.mx = isScattermapTrace ? 'circle' : boundVal('marker.symbol', pickFirst); dEdit.mo = boundVal('marker.opacity', Lib.mean, [0.2, 1]); dEdit.mlc = boundVal('marker.line.color', pickFirst); dEdit.mlw = boundVal('marker.line.width', Lib.mean, [0, 5], CST_MARKER_LINE_WIDTH); - // TODO: Remove this check in next major version - // Use 'solid' for shapes to match existing behavior - dEdit.mld = trace._isShape ? 'solid' : boundVal('marker.line.dash', pickFirst); + dEdit.mld = boundVal('marker.line.dash', pickFirst); tEdit.marker = { sizeref: 1, sizemin: 1, @@ -683,7 +686,7 @@ function getGradientDirection(reversescale, isRadial) { function getStyleGuide(d) { var trace = d[0].trace; var contours = trace.contours; - var showLine = subTypes.hasLines(trace); + var showLine = subTypes.hasLines(trace) || (trace.visible && trace.type === 'quiver'); var showMarker = subTypes.hasMarkers(trace); var showFill = trace.visible && trace.fill && trace.fill !== 'none'; diff --git a/src/components/modebar/attributes.js b/src/components/modebar/attributes.ts similarity index 77% rename from src/components/modebar/attributes.js rename to src/components/modebar/attributes.ts index 06435784c42..c99e28230ba 100644 --- a/src/components/modebar/attributes.js +++ b/src/components/modebar/attributes.ts @@ -1,13 +1,16 @@ -'use strict'; +import type { AttributeMap } from '../../types/lib/attributes'; +import constants from './constants'; -var constants = require('./constants'); - -module.exports = { +/** + * Modebar layout attributes. + * Consumer-facing types are generated from the schema by generate_schema_types.mjs. + */ +const attributes = { editType: 'modebar', orientation: { valType: 'enumerated', - values: ['v', 'h'], + values: ['v', 'h'] as const, dflt: 'h', editType: 'modebar', description: 'Sets the orientation of the modebar.' @@ -46,7 +49,7 @@ module.exports = { 'Please note that these buttons will only be shown if they are', 'compatible with all trace types used in a graph.', 'Similar to `config.modeBarButtonsToAdd` option.', - 'This may include *' + constants.backButtons.join('*, *') + '*.' + `This may include *${constants.backButtons.join('*, *')}*.` ].join(' ') }, remove: { @@ -57,7 +60,9 @@ module.exports = { description: [ 'Determines which predefined modebar buttons to remove.', 'Similar to `config.modeBarButtonsToRemove` option.', - 'This may include *' + constants.foreButtons.join('*, *') + '*.' + `This may include *${constants.foreButtons.join('*, *')}*.` ].join(' ') } -}; +} as const satisfies AttributeMap; + +export default attributes; diff --git a/src/components/modebar/buttons.js b/src/components/modebar/buttons.js index 267d109d5c9..14e03578378 100644 --- a/src/components/modebar/buttons.js +++ b/src/components/modebar/buttons.js @@ -50,7 +50,7 @@ modeBarButtons.toImage = { var toImageButtonOptions = gd._context.toImageButtonOptions; var opts = {format: toImageButtonOptions.format || 'png'}; - Lib.notifier(_(gd, 'Taking snapshot - this may take a few seconds'), 'long', gd); + Lib.notifier(_(gd, 'Preparing image - this may take a few seconds'), 'long', gd); ['filename', 'width', 'height', 'scale'].forEach(function(key) { if(key in toImageButtonOptions) { @@ -60,10 +60,10 @@ modeBarButtons.toImage = { Registry.call('downloadImage', gd, opts) .then(function(filename) { - Lib.notifier(_(gd, 'Snapshot succeeded') + ' - ' + filename, 'long', gd); + Lib.notifier(_(gd, 'Image download succeeded') + ' - ' + filename, 'long', gd); }) .catch(function() { - Lib.notifier(_(gd, 'Sorry, there was a problem downloading your snapshot!'), 'long', gd); + Lib.notifier(_(gd, 'Sorry, there was a problem downloading your image!'), 'long', gd); }); } }; @@ -95,10 +95,6 @@ modeBarButtons.sendChartToCloud = { } }; -// Alias to keep existing button name functional -// TODO: Remove for 4.0 -modeBarButtons.sendDataToCloud = modeBarButtons.sendChartToCloud; - modeBarButtons.zoom2d = { name: 'zoom2d', _cat: 'zoom', diff --git a/src/components/modebar/defaults.js b/src/components/modebar/defaults.js index a9930fa3fb6..36a80b73749 100644 --- a/src/components/modebar/defaults.js +++ b/src/components/modebar/defaults.js @@ -3,7 +3,7 @@ var Lib = require('../../lib'); var Color = require('../color'); var Template = require('../../plot_api/plot_template'); -var attributes = require('./attributes'); +var attributes = require('./attributes').default; module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { var containerIn = layoutIn.modebar || {}; diff --git a/src/components/modebar/index.js b/src/components/modebar/index.js index 1bae66bdf3b..d003c57f673 100644 --- a/src/components/modebar/index.js +++ b/src/components/modebar/index.js @@ -4,7 +4,7 @@ module.exports = { moduleType: 'component', name: 'modebar', - layoutAttributes: require('./attributes'), + layoutAttributes: require('./attributes').default, supplyLayoutDefaults: require('./defaults'), manage: require('./manage') diff --git a/src/components/modebar/manage.js b/src/components/modebar/manage.js index f00a046c486..86bda354d1c 100644 --- a/src/components/modebar/manage.js +++ b/src/components/modebar/manage.js @@ -146,13 +146,6 @@ function getButtonGroups(gd) { // buttons common to all plot types var commonGroup = ['toImage']; if(context.showSendToCloud) commonGroup.push('sendChartToCloud'); - else if(context.showEditInChartStudio) { - console.warn([ - '*showEditInChartStudio* is deprecated.', - 'Use *showSendToCloud* instead.' - ].join(' ')); - commonGroup.push('sendChartToCloud'); - } addGroup(commonGroup); var zoomGroup = []; @@ -296,7 +289,7 @@ function isSelectable(fullData) { if(!trace._module || !trace._module.selectPoints) continue; - if(Registry.traceIs(trace, 'scatter-like')) { + if(Registry.traceIs(trace, 'scatter-like') && trace.type !== 'quiver') { if(scatterSubTypes.hasMarkers(trace) || scatterSubTypes.hasText(trace)) { selectable = true; } diff --git a/src/components/selections/select.js b/src/components/selections/select.js index e44734665ad..01648f46da3 100644 --- a/src/components/selections/select.js +++ b/src/components/selections/select.js @@ -940,41 +940,33 @@ function isOnlyOnePointSelected(searchTraces) { function updateSelectedState(gd, searchTraces, eventData) { var i; + var trace; // before anything else, update preGUI if necessary for(i = 0; i < searchTraces.length; i++) { - var fullInputTrace = searchTraces[i].cd[0].trace._fullInput; - var tracePreGUI = gd._fullLayout._tracePreGUI[fullInputTrace.uid] || {}; + trace = searchTraces[i].cd[0].trace; + var tracePreGUI = gd._fullLayout._tracePreGUI[trace.uid] || {}; if(tracePreGUI.selectedpoints === undefined) { - tracePreGUI.selectedpoints = fullInputTrace._input.selectedpoints || null; + tracePreGUI.selectedpoints = trace._input.selectedpoints || null; } } - var trace; if(eventData) { var pts = eventData.points || []; for(i = 0; i < searchTraces.length; i++) { trace = searchTraces[i].cd[0].trace; - trace._input.selectedpoints = trace._fullInput.selectedpoints = []; - if(trace._fullInput !== trace) trace.selectedpoints = []; + trace._input.selectedpoints = trace.selectedpoints = []; } for(var k = 0; k < pts.length; k++) { var pt = pts[k]; var data = pt.data; - var fullData = pt.fullData; var pointIndex = pt.pointIndex; var pointIndices = pt.pointIndices; if(pointIndices) { [].push.apply(data.selectedpoints, pointIndices); - if(trace._fullInput !== trace) { - [].push.apply(fullData.selectedpoints, pointIndices); - } } else { data.selectedpoints.push(pointIndex); - if(trace._fullInput !== trace) { - fullData.selectedpoints.push(pointIndex); - } } } } else { @@ -982,9 +974,6 @@ function updateSelectedState(gd, searchTraces, eventData) { trace = searchTraces[i].cd[0].trace; delete trace.selectedpoints; delete trace._input.selectedpoints; - if(trace._fullInput !== trace) { - delete trace._fullInput.selectedpoints; - } } } diff --git a/src/constants/axis_placeable_objects.js b/src/constants/axis_placeable_objects.js index 090a23d3766..66bffdd77fa 100644 --- a/src/constants/axis_placeable_objects.js +++ b/src/constants/axis_placeable_objects.js @@ -13,7 +13,7 @@ module.exports = { '*paper*, but refers to the distance in fractions of the domain', 'length from the', lower, 'of the domain of that axis: e.g.,', '*' + axisname + '2 domain* refers to the domain of the second', - axisname, ' axis and a', axisname, 'position of 0.5 refers to the', + axisname, 'axis and a', axisname, 'position of 0.5 refers to the', 'point between the', lower, 'and the', upper, 'of the domain of the', 'second', axisname, 'axis.', ].join(' '); diff --git a/src/lib/clean_number.js b/src/lib/clean_number.js deleted file mode 100644 index 7a265b48df1..00000000000 --- a/src/lib/clean_number.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -var isNumeric = require('fast-isnumeric'); - -var BADNUM = require('../constants/numerical').BADNUM; - -// precompile for speed -var JUNK = /^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g; - -/** - * cleanNumber: remove common leading and trailing cruft - * Always returns either a number or BADNUM. - */ -module.exports = function cleanNumber(v) { - if(typeof v === 'string') { - v = v.replace(JUNK, ''); - } - - if(isNumeric(v)) return Number(v); - - return BADNUM; -}; diff --git a/src/lib/clean_number.ts b/src/lib/clean_number.ts new file mode 100644 index 00000000000..7a09394bfa9 --- /dev/null +++ b/src/lib/clean_number.ts @@ -0,0 +1,22 @@ +'use strict'; + +import isNumeric from 'fast-isnumeric'; +import { BADNUM } from '../constants/numerical'; + +// precompile for speed +const JUNK = /^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g; + +/** + * Remove common leading and trailing cruft from a value and coerce it to a number. + * Always returns either a number or BADNUM. + * + * @param v - value to clean; strings have leading/trailing junk characters stripped before numeric coercion + */ +function cleanNumber(v: any): number | undefined { + if (typeof v === 'string') v = v.replace(JUNK, ''); + if (isNumeric(v)) return Number(v); + + return BADNUM; +} + +export default cleanNumber; diff --git a/src/lib/coerce.js b/src/lib/coerce.js index 7efbabfad07..9b702271893 100644 --- a/src/lib/coerce.js +++ b/src/lib/coerce.js @@ -1,7 +1,6 @@ 'use strict'; var isNumeric = require('fast-isnumeric'); -var tinycolor = require('tinycolor2'); var extendFlat = require('./extend').extendFlat; @@ -161,11 +160,12 @@ exports.valObjectMeta = { description: [ 'A string describing color.', 'Supported formats:', - '- hex (e.g. \'#d3d3d3\')', - '- rgb (e.g. \'rgb(255, 0, 0)\')', - '- rgba (e.g. \'rgb(255, 0, 0, 0.5)\')', - '- hsl (e.g. \'hsl(0, 100%, 50%)\')', - '- hsv (e.g. \'hsv(0, 100%, 100%)\')', + "- hex (e.g. '#d3d3d3', '#d3d3d3aa')", + "- rgb (e.g. 'rgb(255, 0, 0)', 'rgb(255 0 0)')", + "- rgba (e.g. 'rgba(255, 0, 0, 0.5)', 'rgba(255 0 0 / 0.5)')", + "- hsl (e.g. 'hsl(0, 100%, 50%)')", + "- hsla (e.g. 'hsla(0, 100%, 50%, 0.5)')", + "- hwb (e.g. 'hwb(0, 0%, 0%)')", '- named colors (full list: http://www.w3.org/TR/css3-color/#svg-color)' ].join(' '), requiredOpts: [], @@ -173,7 +173,7 @@ exports.valObjectMeta = { coerceFunction: function(v, propOut, dflt) { if(isTypedArraySpec(v)) v = decodeTypedArraySpec(v); - if(tinycolor(v).isValid()) propOut.set(v); + if(Color.isValid(v)) propOut.set(v); else propOut.set(dflt); } }, @@ -185,11 +185,8 @@ exports.valObjectMeta = { requiredOpts: [], otherOpts: ['dflt'], coerceFunction: function(v, propOut, dflt) { - function isColor(color) { - return tinycolor(color).isValid(); - } if(!Array.isArray(v) || !v.length) propOut.set(dflt); - else if(v.every(isColor)) propOut.set(v); + else if(v.every(color => Color.isValid(color))) propOut.set(v); else propOut.set(dflt); } }, @@ -459,7 +456,7 @@ exports.coerce = function(containerIn, containerOut, attributes, attribute, dflt * Variation on coerce * * Uses coerce to get attribute value if user input is valid, - * returns attribute default if user input it not valid or + * returns attribute default if user input is not valid or * returns false if there is no user input. */ exports.coerce2 = function(containerIn, containerOut, attributes, attribute, dflt) { diff --git a/src/lib/custom_country_codes.ts b/src/lib/custom_country_codes.ts new file mode 100644 index 00000000000..aa3985eda34 --- /dev/null +++ b/src/lib/custom_country_codes.ts @@ -0,0 +1,45 @@ +import type { CountryRecord } from 'country-iso-search'; + +/** + * Plotly-specific country records for disputed and unrecognized territories + * that are not part of ISO 3166-1. Each entry uses an ISO3-like code in the + * `X` range (reserved by ISO 3166-1 for user-assigned codes) so these regions + * can be looked up alongside standard countries from `country-iso-search`. + */ +export const COUNTRIES_X: ReadonlyArray = [ + { + iso3: 'XAC', + iso2: '', + m49: '', + name: 'Aksai Chin', + aliases: [] + }, + { + iso3: 'XAP', + iso2: '', + m49: '', + name: 'Arunachal Pradesh', + aliases: [] + }, + { + iso3: 'XBT', + iso2: '', + m49: '', + name: 'Bir Tawil', + aliases: [] + }, + { + iso3: 'XHT', + iso2: '', + m49: '', + name: 'Halaib Triangle', + aliases: [] + }, + { + iso3: 'XJK', + iso2: '', + m49: '', + name: 'Jammu and Kashmir', + aliases: [] + } +]; diff --git a/src/lib/geo_location_utils.js b/src/lib/geo_location_utils.js index 55338602fd8..2e2b6a792a8 100644 --- a/src/lib/geo_location_utils.js +++ b/src/lib/geo_location_utils.js @@ -1,7 +1,7 @@ 'use strict'; var d3 = require('@plotly/d3'); -var countryRegex = require('country-regex'); +const { COUNTRIES, createLookup } = require('country-iso-search'); var { area: turfArea } = require('@turf/area'); var { centroid: turfCentroid } = require('@turf/centroid'); var { bbox: turfBbox } = require('@turf/bbox'); @@ -12,9 +12,9 @@ var isPlainObject = require('./is_plain_object'); var nestedProperty = require('./nested_property'); var polygon = require('./polygon'); const { usaLocationAbbreviations, usaLocationList } = require('./usa_location_names'); +const { COUNTRIES_X } = require('./custom_country_codes'); -// make list of all country iso3 ids from at runtime -var countryIds = Object.keys(countryRegex); +const { lookupAlpha3 } = createLookup([...COUNTRIES, ...COUNTRIES_X]); var locationmodeToIdFinder = { 'ISO-3': identity, @@ -23,13 +23,8 @@ var locationmodeToIdFinder = { }; function countryNameToISO3(countryName) { - for (var i = 0; i < countryIds.length; i++) { - var iso3 = countryIds[i]; - var regex = new RegExp(countryRegex[iso3]); - - if (regex.test(countryName.trim().toLowerCase())) return iso3; - } - + const iso3 = lookupAlpha3(countryName); + if (iso3) return iso3; loggers.log('Unrecognized country name: ' + countryName + '.'); return false; diff --git a/src/lib/gl_format_color.js b/src/lib/gl_format_color.js index e42170c3d2d..ff4f8c38afc 100644 --- a/src/lib/gl_format_color.js +++ b/src/lib/gl_format_color.js @@ -1,10 +1,10 @@ 'use strict'; var isNumeric = require('fast-isnumeric'); -var tinycolor = require('tinycolor2'); var rgba = require('color-normalize'); var Colorscale = require('../components/colorscale'); +var Color = require('../components/color'); var colorDflt = require('../components/color/attributes').defaultLine; var isArrayOrTypedArray = require('./array').isArrayOrTypedArray; @@ -78,11 +78,10 @@ function parseColorScale(cont) { return colorscale.map(function(elem) { var index = elem[0]; - var color = tinycolor(elem[1]); - var rgb = color.toRgb(); + const { r, g, b, alpha = 1 } = Color.color(elem[1]).rgb().object(); return { index: index, - rgb: [rgb.r, rgb.g, rgb.b, rgb.a] + rgb: [r, g, b, alpha] }; }); } diff --git a/src/lib/index.js b/src/lib/index.js index d898a526140..9b899903f3b 100644 --- a/src/lib/index.js +++ b/src/lib/index.js @@ -105,7 +105,7 @@ lib.roundUp = searchModule.roundUp; lib.sort = searchModule.sort; lib.findIndexOfMin = searchModule.findIndexOfMin; -lib.sortObjectKeys = require('./sort_object_keys'); +lib.sortObjectKeys = require('./sort_object_keys').default; var statsModule = require('./stats'); lib.aggNums = statsModule.aggNums; @@ -206,7 +206,9 @@ lib.pushUnique = require('./push_unique'); lib.increment = require('./increment'); -lib.cleanNumber = require('./clean_number'); +lib.cleanNumber = require('./clean_number').default; + +lib.slugify = require('./slugify'); lib.ensureNumber = function ensureNumber(v) { if (!isNumeric(v)) return BADNUM; @@ -585,39 +587,17 @@ lib.extractOption = function (calcPt, trace, calcKey, traceKey) { if (!Array.isArray(traceVal)) return traceVal; }; -function makePtIndex2PtNumber(indexToPoints) { - var ptIndex2ptNumber = {}; - for (var k in indexToPoints) { - var pts = indexToPoints[k]; - for (var j = 0; j < pts.length; j++) { - ptIndex2ptNumber[pts[j]] = +k; - } - } - return ptIndex2ptNumber; -} - /** Tag selected calcdata items - * - * N.B. note that point 'index' corresponds to input data array index - * whereas 'number' is its post-transform version. * * @param {array} calcTrace * @param {object} trace * - selectedpoints {array} - * - _indexToPoints {object} * @param {ptNumber2cdIndex} ptNumber2cdIndex (optional) * optional map object for trace types that do not have 1-to-1 point number to * calcdata item index correspondence (e.g. histogram) */ lib.tagSelected = function (calcTrace, trace, ptNumber2cdIndex) { var selectedpoints = trace.selectedpoints; - var indexToPoints = trace._indexToPoints; - var ptIndex2ptNumber; - - // make pt index-to-number map object, which takes care of transformed traces - if (indexToPoints) { - ptIndex2ptNumber = makePtIndex2PtNumber(indexToPoints); - } function isCdIndexValid(v) { return v !== undefined && v < calcTrace.length; @@ -630,7 +610,7 @@ lib.tagSelected = function (calcTrace, trace, ptNumber2cdIndex) { lib.isIndex(ptIndex) || (lib.isArrayOrTypedArray(ptIndex) && lib.isIndex(ptIndex[0]) && lib.isIndex(ptIndex[1])) ) { - var ptNumber = ptIndex2ptNumber ? ptIndex2ptNumber[ptIndex] : ptIndex; + var ptNumber = ptIndex; var cdIndex = ptNumber2cdIndex ? ptNumber2cdIndex[ptNumber] : ptNumber; if (isCdIndexValid(cdIndex)) { @@ -640,30 +620,6 @@ lib.tagSelected = function (calcTrace, trace, ptNumber2cdIndex) { } }; -lib.selIndices2selPoints = function (trace) { - var selectedpoints = trace.selectedpoints; - var indexToPoints = trace._indexToPoints; - - if (indexToPoints) { - var ptIndex2ptNumber = makePtIndex2PtNumber(indexToPoints); - var out = []; - - for (var i = 0; i < selectedpoints.length; i++) { - var ptIndex = selectedpoints[i]; - if (lib.isIndex(ptIndex)) { - var ptNumber = ptIndex2ptNumber[ptIndex]; - if (lib.isIndex(ptNumber)) { - out.push(ptNumber); - } - } - } - - return out; - } else { - return selectedpoints; - } -}; - /** Returns target as set by 'target' transform attribute * * @param {object} trace : full trace object @@ -956,8 +912,8 @@ lib.expandObjectPaths = function (data) { data[prop] = data[prop] || []; if (match[3] === '.') { - // This is the case where theere are subsequent properties into which - // we must recurse, e.g. transforms[0].value + // This is the case where there are subsequent properties into which + // we must recurse, e.g. annotations[0].text trailingPath = match[4]; dest = data[prop][idx] = data[prop][idx] || {}; diff --git a/src/lib/mod.js b/src/lib/mod.js deleted file mode 100644 index 04d24056bd3..00000000000 --- a/src/lib/mod.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -/** - * sanitized modulus function that always returns in the range [0, d) - * rather than (-d, 0] if v is negative - */ -function mod(v, d) { - var out = v % d; - return out < 0 ? out + d : out; -} - -/** - * sanitized modulus function that always returns in the range [-d/2, d/2] - * rather than (-d, 0] if v is negative - */ -function modHalf(v, d) { - return Math.abs(v) > (d / 2) ? - v - Math.round(v / d) * d : - v; -} - -module.exports = { - mod: mod, - modHalf: modHalf -}; diff --git a/src/lib/mod.ts b/src/lib/mod.ts new file mode 100644 index 00000000000..3da79bd27d9 --- /dev/null +++ b/src/lib/mod.ts @@ -0,0 +1,24 @@ +'use strict'; + +/** + * Sanitized modulus function that always returns in the range [0, d) + * rather than (-d, 0] if v is negative. + * + * @param v - dividend + * @param d - divisor (the modulus); assumed positive + */ +export function mod(v: number, d: number) { + const out = v % d; + return out < 0 ? out + d : out; +} + +/** + * Sanitized modulus function that always returns in the range [-d/2, d/2] + * rather than (-d, 0] if v is negative. + * + * @param v - dividend + * @param d - divisor (the modulus); assumed positive + */ +export function modHalf(v: number, d: number) { + return Math.abs(v) > d / 2 ? v - Math.round(v / d) * d : v; +} diff --git a/src/lib/regex.js b/src/lib/regex.js deleted file mode 100644 index 15eef630477..00000000000 --- a/src/lib/regex.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -/* - * make a regex for matching counter ids/names ie xaxis, xaxis2, xaxis10... - * - * @param {string} head: the head of the pattern, eg 'x' matches 'x', 'x2', 'x10' etc. - * 'xy' is a special case for cartesian subplots: it matches 'x2y3' etc - * @param {Optional(string)} tail: a fixed piece after the id - * eg counterRegex('scene', '.annotations') for scene2.annotations etc. - * @param {boolean} openEnded: if true, the string may continue past the match. - * @param {boolean} matchBeginning: if false, the string may start before the match. - */ -exports.counter = function(head, tail, openEnded, matchBeginning) { - var fullTail = (tail || '') + (openEnded ? '' : '$'); - var startWithPrefix = matchBeginning === false ? '' : '^'; - if(head === 'xy') { - return new RegExp(startWithPrefix + 'x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?' + fullTail); - } - return new RegExp(startWithPrefix + head + '([2-9]|[1-9][0-9]+)?' + fullTail); -}; diff --git a/src/lib/regex.ts b/src/lib/regex.ts new file mode 100644 index 00000000000..9dc24007b44 --- /dev/null +++ b/src/lib/regex.ts @@ -0,0 +1,21 @@ +'use strict'; + +const NUMBER_REGEX = '([2-9]|[1-9][0-9]+)?'; + +/** + * make a regex for matching counter ids/names ie xaxis, xaxis2, xaxis10... + * + * @param head - the head of the pattern, eg 'x' matches 'x', 'x2', 'x10' etc. + * 'xy' is a special case for cartesian subplots: it matches 'x2y3' etc + * @param tail - a fixed piece after the id + * eg counterRegex('scene', '.annotations') for scene2.annotations etc. + * @param openEnded - if true, the string may continue past the match. + * @param matchBeginning - if false, the string may start before the match. + */ +export function counter(head: string, tail: string = '', openEnded: boolean, matchBeginning: boolean) { + const fullTail = tail + (openEnded ? '' : '$'); + const startWithPrefix = matchBeginning === false ? '' : '^'; + return head === 'xy' + ? new RegExp(startWithPrefix + 'x' + NUMBER_REGEX + 'y' + NUMBER_REGEX + fullTail) + : new RegExp(startWithPrefix + head + NUMBER_REGEX + fullTail); +} diff --git a/src/lib/slugify.js b/src/lib/slugify.js new file mode 100644 index 00000000000..0b7f10803c5 --- /dev/null +++ b/src/lib/slugify.js @@ -0,0 +1,68 @@ +'use strict'; + +// precompile for speed +var HTML_TAGS_REGEX = /<[^>]*>/g; // Anything contained in < > tags +// Forbid ANY character in the Unicode Symbol or Punctuation categories, +// which includes pretty much every common non-word character, +// including all of the following: \/:*?"<>|$%&!@#~.^`'(){}[]-_,=+; +// We actually want to allow hyphens (WORD_SEP_CHAR), but it's not easy +// to exclude them from the regex, so we'll handle them in the match function. +var FORBIDDEN_CHARS_REGEX = /[\p{S}\p{P}]/gu; +// Control chars, format chars (e.g. ZWJ), variation selectors, and the +// combining enclosing keycap. Some of these may be left behind after emoji +// symbols are removed, so we explicitly remove them here. +// Biome doesn't like seeing variation selectors in regexes, but it's intentional here +// biome-ignore lint/suspicious/noMisleadingCharacterClass: Intentionally matching standalone modifier and control characters +var INVISIBLE_CHARS_REGEX = /[\p{Cc}\p{Cf}\uFE00-\uFE0F\u20E3]/gu; + +var UNICODE_REPLACEMENT_CHAR_REGEX = /�/g; // U+FFFD, the Unicode replacement character +var WHITESPACE_REGEX = /\s+/g; // All whitespace characters + +var WORD_SEP_CHAR = '-'; // Character used to separate words (replaces whitespace) +var _WORD_SEP_ESCAPED = WORD_SEP_CHAR.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); +var WORD_SEP_CHARS_REGEX = new RegExp(_WORD_SEP_ESCAPED + '{3,}', 'g'); // Three or more consecutive word separator chars +var TRAILING_WORD_SEP_CHAR_REGEX = new RegExp(_WORD_SEP_ESCAPED + '$', 'g'); // Trailing word separator char + +// Safely under the limit for most filesystems +var DEFAULT_MAX_LEN = 60; + +/** + * Coerce a string to well-formed UTF-16, by replacing any unpaired surrogates + * with the replacement character U+FFFD. + * + * Uses the native String.prototype.toWellFormed (ES2024) when available, and + * otherwise falls back to TextEncoder/TextDecoder, which has the same effect. + */ +function toWellFormed(str) { + if(typeof str.toWellFormed === 'function') return str.toWellFormed(); + return new TextDecoder().decode(new TextEncoder().encode(str)); +} + +/** + * slugify: turn an arbitrary string into a lowercase, hyphenated, + * filesystem-safe token (e.g. for use as a filename). Whitespace is replaced + * with hyphens, and Unicode letters (accents, CJK, etc.) are preserved. + * Returns a valid Unicode string. + * + * @param {string} str + * @param {number} [maxLen] max length in code points (default 60) + * @return {string} + */ +module.exports = function slugify(str, maxLen = DEFAULT_MAX_LEN) { + var slug = toWellFormed(str ?? '') // Guarantee well-formed Unicode text + .replace(UNICODE_REPLACEMENT_CHAR_REGEX, '') // Drop Unicode replacement chars left by previous step + .replace(HTML_TAGS_REGEX, ' ') // Remove < > tags, such as
(replace with space) + .replace(FORBIDDEN_CHARS_REGEX, (c) => { // Remove forbidden filename characters (but allow the word sep char) + return c === WORD_SEP_CHAR ? c : ''; + }) + .toLowerCase() // Lowercase everything + .trim() // Strip leading/trailing whitespace + .replace(WHITESPACE_REGEX, WORD_SEP_CHAR) // Replace any remaining whitespace with the word sep char + .replace(INVISIBLE_CHARS_REGEX, '') // Remove control/format chars and emoji glue (after whitespace) + .replace(WORD_SEP_CHARS_REGEX, WORD_SEP_CHAR); // Replace multiple word sep chars with a single one + + if (slug.length <= maxLen) return slug; + // Apply maxLen to the resulting string. Use Array.from().slice() instead of String.prototype.split() + // to avoid splitting in the middle of a surrogate pair. + return Array.from(slug).slice(0, maxLen).join('').replace(TRAILING_WORD_SEP_CHAR_REGEX, ''); +}; diff --git a/src/lib/sort_object_keys.js b/src/lib/sort_object_keys.js deleted file mode 100644 index f995399cc52..00000000000 --- a/src/lib/sort_object_keys.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -module.exports = function sortObjectKeys(obj) { - return Object.keys(obj).sort(); -}; diff --git a/src/lib/sort_object_keys.ts b/src/lib/sort_object_keys.ts new file mode 100644 index 00000000000..9984da1c737 --- /dev/null +++ b/src/lib/sort_object_keys.ts @@ -0,0 +1,12 @@ +'use strict'; + +/** + * Return the keys of an object in lexicographic (default `Array.prototype.sort`) order. + * + * @param obj - object whose own enumerable keys will be listed and sorted + */ +function sortObjectKeys(obj: Record) { + return Object.keys(obj).sort(); +} + +export default sortObjectKeys; diff --git a/src/lib/svg_text_utils.js b/src/lib/svg_text_utils.js index 0b37345312b..d4bd953684b 100644 --- a/src/lib/svg_text_utils.js +++ b/src/lib/svg_text_utils.js @@ -13,6 +13,17 @@ var LINE_SPACING = require('../constants/alignment').LINE_SPACING; var FIND_TEX = /([^$]*)([$]+[^$]*[$]+)([^$]*)/; +/** +* Checks whether the given string contains LaTeX markup +* (delimited by a pair of $ signs) and returns the match array if so. +* +* @param {string} str: the string to check for tex +* @return {?Array} the regex match array (truthy) if the string contains tex, +* otherwise null (for an empty/missing string or when no tex delimiters are found). +*/ +const matchTex = (str) => str ? str.match(FIND_TEX) : null; +exports.matchTex = matchTex; + exports.convertToTspans = function(_context, gd, _callback) { var str = _context.text(); @@ -21,7 +32,7 @@ exports.convertToTspans = function(_context, gd, _callback) { var tex = (!_context.attr('data-notex')) && gd && gd._context.typesetMath && (typeof MathJax !== 'undefined') && - str.match(FIND_TEX); + matchTex(str); var parent = d3.select(_context.node().parentNode); if(parent.empty()) return; diff --git a/src/plot_api/helpers.js b/src/plot_api/helpers.js index 33da6cbfef1..1dc17062f52 100644 --- a/src/plot_api/helpers.js +++ b/src/plot_api/helpers.js @@ -6,7 +6,6 @@ var Registry = require('../registry'); var Lib = require('../lib'); var Plots = require('../plots/plots'); var AxisIds = require('../plots/cartesian/axis_ids'); -var Color = require('../components/color'); var cleanId = AxisIds.cleanId; var getFromTrace = AxisIds.getFromTrace; @@ -140,10 +139,6 @@ exports.cleanLayout = function (layout) { */ if (layout.dragmode === 'rotate') layout.dragmode = 'orbit'; - // sanitize rgb(fractions) and rgba(fractions) that old tinycolor - // supported, but new tinycolor does not because they're not valid css - Color.clean(layout); - // clean the layout container in layout.template if (layout.template && layout.template.layout) { exports.cleanLayout(layout.template.layout); @@ -279,10 +274,6 @@ exports.cleanData = function (data) { if (emptyContainer(trace, 'marker')) delete trace.marker; } - // sanitize rgb(fractions) and rgba(fractions) that old tinycolor - // supported, but new tinycolor does not because they're not valid css - Color.clean(trace); - // remove obsolete autobin(x|y) attributes, but only if true // if false, this needs to happen in Histogram.calc because it // can be a one-time autobin so we need to know the results before @@ -354,7 +345,7 @@ function emptyContainer(outer, innerStr) { // swap all the data and data attributes associated with x and y exports.swapXYData = function (trace) { var i; - Lib.swapAttrs(trace, ['?', '?0', 'd?', '?bins', 'nbins?', 'autobin?', '?src', 'error_?']); + Lib.swapAttrs(trace, ['?', '?0', 'd?', '?bins', 'nbins?', 'autobin?', 'error_?']); if (Array.isArray(trace.z) && Array.isArray(trace.z[0])) { if (trace.transpose) delete trace.transpose; else trace.transpose = true; diff --git a/src/plot_api/plot_api.js b/src/plot_api/plot_api.js index 2c9878ba891..9b1bfa577b7 100644 --- a/src/plot_api/plot_api.js +++ b/src/plot_api/plot_api.js @@ -373,7 +373,6 @@ function _doPlot(gd, data, layout, config) { subroutines.drawData, subroutines.finalDraw, initInteractions, - Plots.addLinks, Plots.rehover, Plots.redrag, Plots.reselect, @@ -485,7 +484,6 @@ function setPlotContext(gd, config) { context.scrollZoom = false; context.doubleClick = false; context.showTips = false; - context.showLink = false; context.displayModeBar = false; } @@ -1410,16 +1408,6 @@ function _restyle(gd, aobj, traces) { return 'LAYOUT' + axName + '.range'; } - function getFullTrace(traceIndex) { - // usually fullData maps 1:1 onto data, but with groupby transforms - // the fullData index can be greater. Take the *first* matching trace. - for (var j = traceIndex; j < fullData.length; j++) { - if (fullData[j]._input === data[traceIndex]) return fullData[j]; - } - // should never get here - and if we *do* it should cause an error - // later on undefined fullTrace is passed to nestedProperty. - } - // for attrs that interact (like scales & autoscales), save the // old vals before making the change // val=undefined will not set a value, just record what the value was. @@ -1440,7 +1428,7 @@ function _restyle(gd, aobj, traces) { extraparam = layoutNP(gd.layout, attr.replace('LAYOUT', '')); } else { var tracei = traces[i]; - var preGUI = fullLayout._tracePreGUI[getFullTrace(tracei)._fullInput.uid]; + var preGUI = fullLayout._tracePreGUI[fullData[tracei].uid]; extraparam = makeNP(preGUI, guiEditFlag)(data[tracei], attr); } @@ -1511,8 +1499,8 @@ function _restyle(gd, aobj, traces) { undoit[ai] = a0(); for (i = 0; i < traces.length; i++) { cont = data[traces[i]]; - contFull = getFullTrace(traces[i]); - var preGUI = fullLayout._tracePreGUI[contFull._fullInput.uid]; + contFull = fullData[traces[i]]; + var preGUI = fullLayout._tracePreGUI[contFull.uid]; param = makeNP(preGUI, guiEditFlag)(cont, ai); oldVal = param.get(); newVal = Array.isArray(vi) ? vi[i % vi.length] : vi; @@ -1566,9 +1554,9 @@ function _restyle(gd, aobj, traces) { labelsTo = 'y'; valuesTo = 'x'; } - Lib.swapAttrs(cont, ['?', '?src'], 'labels', labelsTo); + Lib.swapAttrs(cont, ['?'], 'labels', labelsTo); Lib.swapAttrs(cont, ['d?', '?0'], 'label', labelsTo); - Lib.swapAttrs(cont, ['?', '?src'], 'values', valuesTo); + Lib.swapAttrs(cont, ['?'], 'values', valuesTo); if (oldVal === 'pie' || oldVal === 'funnelarea') { nestedProperty(cont, 'marker.color').set(nestedProperty(cont, 'marker.colors').get()); @@ -2346,8 +2334,7 @@ var layoutUIControlPatterns = [ // or with no `attr` we use `trace.uirevision` var traceUIControlPatterns = [ { pattern: /^selectedpoints$/, attr: 'selectionrevision' }, - // "visible" includes trace.transforms[i].styles[j].value.visible - { pattern: /(^|value\.)visible$/, attr: 'legend.uirevision' }, + { pattern: /^visible$/, attr: 'legend.uirevision' }, { pattern: /^dimensions\[\d+\]\.constraintrange/ }, { pattern: /^node\.(x|y|groups)/ }, // for Sankey nodes { pattern: /^level$/ }, // for Sunburst, Treemap and Icicle traces @@ -2357,8 +2344,7 @@ var traceUIControlPatterns = [ // reasonable or should these be `editrevision`? // Also applies to axis titles up in the layout section - // "name" also includes transform.styles - { pattern: /(^|value\.)name$/ }, + { pattern: /^name$/ }, // including nested colorbar attributes (ie marker.colorbar) { pattern: /colorbar\.title\.text$/ }, { pattern: /colorbar\.(x|y)$/, attr: 'editrevision' } @@ -2395,7 +2381,7 @@ function getNewRev(revAttr, container) { function getFullTraceIndexFromUid(uid, fullData) { for (var i = 0; i < fullData.length; i++) { - if (fullData[i]._fullInput.uid === uid) return i; + if (fullData[i].uid === uid) return i; } return -1; } @@ -2502,7 +2488,7 @@ function applyUIRevisions(data, layout, oldFullData, oldFullLayout) { for (var uid in allTracePreGUI) { var tracePreGUI = allTracePreGUI[uid]; var newTrace = null; - var fullInput; + var fullTrace; for (key in tracePreGUI) { // wait until we know we have preGUI values to look for traces // but if we don't find both, stop looking at this uid @@ -2514,10 +2500,9 @@ function applyUIRevisions(data, layout, oldFullData, oldFullLayout) { delete allTracePreGUI[uid]; break; } - var fullTrace = oldFullData[fulli]; - fullInput = fullTrace._fullInput; + fullTrace = oldFullData[fulli]; - var newTracei = getTraceIndexFromUid(uid, data, fullInput.index); + var newTracei = getTraceIndexFromUid(uid, data, fullTrace.index); if (newTracei < 0) { // No match in new data delete allTracePreGUI[uid]; @@ -2532,7 +2517,7 @@ function applyUIRevisions(data, layout, oldFullData, oldFullLayout) { oldRev = nestedProperty(oldFullLayout, match.attr).get(); newRev = oldRev && getNewRev(match.attr, layout); } else { - oldRev = fullInput.uirevision; + oldRev = fullTrace.uirevision; // inheritance for trace.uirevision is simple, just layout.uirevision newRev = newTrace.uirevision; if (newRev === undefined) newRev = layout.uirevision; @@ -2544,7 +2529,7 @@ function applyUIRevisions(data, layout, oldFullData, oldFullLayout) { newNP = nestedProperty(newTrace, key); newVal = newNP.get(); if (valsMatch(newVal, preGUIVal)) { - newNP.set(undefinedToNull(nestedProperty(fullInput, key).get())); + newNP.set(undefinedToNull(nestedProperty(fullTrace, key).get())); continue; } } @@ -2633,9 +2618,9 @@ function react(gd, data, layout, config) { applyUIRevisions(gd.data, gd.layout, oldFullData, oldFullLayout); - // "true" skips updating calcdata and remapping arrays from calcTransforms, - // which supplyDefaults usually does at the end, but we may need to NOT do - // if the diff (which we haven't determined yet) says we'll recalc + // "true" skips updating calcdata, which supplyDefaults usually does at + // the end, but we may need to NOT do if the diff (which we haven't + // determined yet) says we'll recalc Plots.supplyDefaults(gd, { skipUpdateCalc: true }); var newFullData = gd._fullData; @@ -2670,7 +2655,7 @@ function react(gd, data, layout, config) { if (emptyCategories) emptyCategories(); } } - // otherwise do the calcdata updates and calcTransform array remaps that we skipped earlier + // otherwise do the calcdata updates that we skipped earlier } else { Plots.supplyDefaultsUpdateCalc(gd.calcdata, newFullData); } @@ -2786,11 +2771,11 @@ function diffData(gd, oldFullData, newFullData, immutable, transition, newDataRe for (i = 0; i < oldFullData.length; i++) { if (newFullData[i]) { - trace = newFullData[i]._fullInput; + trace = newFullData[i]; if (seenUIDs[trace.uid]) continue; seenUIDs[trace.uid] = 1; - getDiffFlags(oldFullData[i]._fullInput, trace, [], diffOpts); + getDiffFlags(oldFullData[i], trace, [], diffOpts); } } diff --git a/src/plot_api/plot_config.js b/src/plot_api/plot_config.js index 55237deb55c..b76a2cd3a17 100644 --- a/src/plot_api/plot_config.js +++ b/src/plot_api/plot_config.js @@ -223,40 +223,6 @@ var configAttributes = { description: 'Determines whether or not notifier is displayed.' }, - showLink: { - valType: 'boolean', - dflt: false, - description: [ - 'Determines whether a link to Chart Studio Cloud is displayed', - 'at the bottom right corner of resulting graphs.', - 'Use with `sendData` and `linkText`.' - ].join(' ') - }, - linkText: { - valType: 'string', - dflt: 'Edit chart', - noBlank: true, - description: [ - 'Sets the text appearing in the `showLink` link.' - ].join(' ') - }, - sendData: { - valType: 'boolean', - dflt: true, - description: [ - 'If *showLink* is true, does it contain data', - 'just link to a Chart Studio Cloud file?' - ].join(' ') - }, - showSources: { - valType: 'any', - dflt: false, - description: [ - 'Adds a source-displaying function to show sources on', - 'the resulting graphs.' - ].join(' ') - }, - displayModeBar: { valType: 'enumerated', values: ['hover', true, false], @@ -279,13 +245,6 @@ var configAttributes = { 'send chart data to an external server.' ].join(' ') }, - showEditInChartStudio: { - valType: 'boolean', - dflt: false, - description: [ - 'Deprecated. Use `showSendToCloud` instead.' - ].join(' ') - }, modeBarButtonsToRemove: { valType: 'any', dflt: [], diff --git a/src/plot_api/plot_schema.js b/src/plot_api/plot_schema.js index 56cf2901a56..ba0c7a490a1 100644 --- a/src/plot_api/plot_schema.js +++ b/src/plot_api/plot_schema.js @@ -218,7 +218,7 @@ exports.findArrayAttributes = function(trace) { * @param {object} trace * full trace object that contains a reference to `_module.attributes` * @param {object} parts - * an array of parts, like ['transforms', 1, 'value'] + * an array of parts, like ['dimensions', 1, 'values'] * typically from nestedProperty(...).parts * * @return {object|false} @@ -539,29 +539,16 @@ function getFramesAttributes() { } function formatAttributes(attrs) { - mergeValTypeAndRole(attrs); + setRole(attrs); formatArrayContainers(attrs); stringify(attrs); return attrs; } -function mergeValTypeAndRole(attrs) { - function makeSrcAttr(attrName) { - return { - valType: 'string', - description: 'Sets the source reference on Chart Studio Cloud for `' + attrName + '`.', - editType: 'none' - }; - } - +function setRole(attrs) { function callback(attr, attrName, attrs) { - if(exports.isValObject(attr)) { - if(attr.arrayOk === true || attr.valType === 'data_array') { - // all 'arrayOk' and 'data_array' attrs have a corresponding 'src' attr - attrs[attrName + 'src'] = makeSrcAttr(attrName); - } - } else if(isPlainObject(attr)) { + if(!exports.isValObject(attr) && isPlainObject(attr)) { // all attrs container objects get role 'object' attr.role = 'object'; } diff --git a/src/plot_api/template_api.js b/src/plot_api/template_api.js index cb80162222c..e6bbad4ded6 100644 --- a/src/plot_api/template_api.js +++ b/src/plot_api/template_api.js @@ -49,8 +49,6 @@ exports.makeTemplate = function(figure) { data.forEach(function(trace) { // TODO: What if no style info is extracted for this trace. We may // not want an empty object as the null value. - // TODO: allow transforms to contribute to templates? - // as it stands they are ignored, which may be for the best... var traceTemplate = {}; walkStyleKeys(trace, traceTemplate, getTraceInfo.bind(null, trace)); @@ -342,7 +340,7 @@ exports.validateTemplate = function(figureIn, template) { var fullTrace = fullData[i]; traceType = fullTrace.type; typeCount[traceType] = (typeCount[traceType] || 0) + 1; - if(!fullTrace._fullInput._template) { + if(!fullTrace._template) { // this takes care of the case of traceType in the data but not // the template errorList.push({ diff --git a/src/plot_api/to_image.js b/src/plot_api/to_image.js index 97c752b4b0c..bf6bec98f39 100644 --- a/src/plot_api/to_image.js +++ b/src/plot_api/to_image.js @@ -170,7 +170,7 @@ function toImage(gd, opts) { } if(format === 'full-json') { - var json = plots.graphJson(clonedGd, false, 'keepdata', 'object', true, true); + var json = plots.graphJson(clonedGd, false, 'object', true, true); json.version = version; json = JSON.stringify(json); cleanup(); diff --git a/src/plots/attributes.js b/src/plots/attributes.js index bad077693c3..758a2bb7db2 100644 --- a/src/plots/attributes.js +++ b/src/plots/attributes.js @@ -188,32 +188,6 @@ module.exports = { ].join(' ') }, hoverlabel: fxAttrs.hoverlabel, - stream: { - token: { - valType: 'string', - noBlank: true, - strict: true, - editType: 'calc', - description: [ - 'The stream id number links a data trace on a plot with a stream.', - 'See https://chart-studio.plotly.com/settings for more details.' - ].join(' ') - }, - maxpoints: { - valType: 'number', - min: 0, - max: 10000, - dflt: 500, - editType: 'calc', - description: [ - 'Sets the maximum number of points to keep on the plots from an', - 'incoming stream.', - 'If `maxpoints` is set to *50*, only the newest 50 points will', - 'be displayed on the plot.' - ].join(' ') - }, - editType: 'calc' - }, uirevision: { valType: 'any', editType: 'none', diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 08bfda6f367..d99867a7e50 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -1113,6 +1113,9 @@ axes.calcTicks = function calcTicks(ax, opts) { var obj = { value: x }; if(major) { + // mark first major tick, for showexponent/showtickprefix/showticksuffix 'first' + if(x === x0) obj.first = true; + if(isDLog && (x !== (x | 0))) { obj.simpleLabel = true; } @@ -1255,9 +1258,10 @@ axes.calcTicks = function calcTicks(ax, opts) { tickVals.pop(); } - // save the last tick as well as first, so we can - // show the exponent only on the last one + // save the last tick as well as first ax._tmax = (tickVals[tickVals.length - 1] || {}).value; + // mark the last major tick, for showexponent/showtickprefix/showticksuffix 'last' + if(tickVals.length) tickVals[tickVals.length - 1].last = true; // for showing the rest of a date when the main tick label is only the // latter part: ax._prevDateHead holds what we showed most recently. @@ -1279,7 +1283,8 @@ axes.calcTicks = function calcTicks(ax, opts) { ax, tickVal.value, false, // hover - tickVal.simpleLabel // noSuffixPrefix + tickVal.simpleLabel, // noSuffixPrefix + {first: tickVal.first, last: tickVal.last} // positionFlags ); var p = tickVal.periodX; if(p !== undefined) { @@ -1351,6 +1356,16 @@ function syncTicks(ax) { var ticksOut = []; if(baseAxis._vals) { + // find the indices of the first and last labelled (major, non-noTick) base ticks, + // for showexponent/showtickprefix/showticksuffix 'first'/'last' + var firstMajorIdx = -1; + var lastMajorIdx = -1; + for(var j = 0; j < baseAxis._vals.length; j++) { + if(baseAxis._vals[j].noTick || baseAxis._vals[j].minor) continue; + if(firstMajorIdx === -1) firstMajorIdx = j; + lastMajorIdx = j; + } + for(var i = 0; i < baseAxis._vals.length; i++) { // filter vals with noTick flag if(baseAxis._vals[i].noTick) { @@ -1362,7 +1377,10 @@ function syncTicks(ax) { // get the tick for the current axis based on position var vali = ax.p2l(pos); - var obj = axes.tickText(ax, vali); + var obj = axes.tickText(ax, vali, false, undefined, { + first: i === firstMajorIdx, + last: i === lastMajorIdx, + }); // assign minor ticks if(baseAxis._vals[i].minor) { @@ -1408,10 +1426,27 @@ function arrayTicks(ax, majorOnly) { // except with more precision to the numbers if(!Lib.isArrayOrTypedArray(text)) text = []; + // indices of the first and last in-range major ticks, + // showexponent/showtickprefix/showticksuffix 'first'/'last' + var firstIdx = -1; + var lastIdx = -1; + if(!isMinor) { + for(var k = 0; k < vals.length; k++) { + var valk = tickVal2l(vals[k]); + if(valk > tickMin && valk < tickMax) { + if(firstIdx === -1) firstIdx = k; + lastIdx = k; + } + } + } + for(var i = 0; i < vals.length; i++) { var vali = tickVal2l(vals[i]); if(vali > tickMin && vali < tickMax) { - var obj = axes.tickText(ax, vali, false, String(text[i])); + var obj = axes.tickText(ax, vali, false, String(text[i]), { + first: i === firstIdx, + last: i === lastIdx, + }); if(isMinor) { obj.minor = true; obj.text = ''; @@ -1725,13 +1760,23 @@ axes.tickFirst = function(ax, opts) { } else throw 'unrecognized dtick ' + String(dtick); }; -// draw the text for one tick. -// px,py are the location on gd.paper -// prefix is there so the x axis ticks can be dropped a line -// ax is the axis layout, x is the tick value -// hover is a (truthy) flag for whether to show numbers with a bit -// more precision for hovertext -axes.tickText = function(ax, x, hover, noSuffixPrefix) { +/** + * Compute the text and metadata for one tick. + * + * @param {object} ax: the axis layout object + * @param {number} x: the tick value + * @param {boolean} hover: whether tick being computed for hovertext (as opposed to axis) + * @param {boolean} noSuffixPrefix: whether to skip adding tickprefix and ticksuffix + * @param {object} positionFlags: optional flags describing where this tick sits on the + * axis, used by the showexponent/showtickprefix/showticksuffix 'first'/'last' options: + * - first (boolean): whether this is the first (labelled, major) tick on the axis + * - last (boolean): whether this is the last (labelled, major) tick on the axis + * @return {object} the tick object, including its formatted `text` + */ +axes.tickText = function(ax, x, hover, noSuffixPrefix, positionFlags) { + var first = !!positionFlags?.first; + var last = !!positionFlags?.last; + var out = tickTextObj(ax, x); var arrayMode = ax.tickmode === 'array'; var extraPrecision = hover || arrayMode; @@ -1765,13 +1810,10 @@ axes.tickText = function(ax, x, hover, noSuffixPrefix) { function isHidden(showAttr) { if(showAttr === undefined) return true; if(hover) return showAttr === 'none'; - - var firstOrLast = { - first: ax._tmin, - last: ax._tmax - }[showAttr]; - - return showAttr !== 'all' && x !== firstOrLast; + if(showAttr === 'all') return false; + if(showAttr === 'first') return !first; + if(showAttr === 'last') return !last; + return true; // fallback for the hover is false and showAttr==='none' or another value } var hideexp = hover ? diff --git a/src/plots/cartesian/axis_format_attributes.js b/src/plots/cartesian/axis_format_attributes.js index d64a495a20f..ed1a4cfeb8e 100644 --- a/src/plots/cartesian/axis_format_attributes.js +++ b/src/plots/cartesian/axis_format_attributes.js @@ -23,7 +23,7 @@ function axisHoverFormat(x, noDates) { function descriptionOnlyNumbers(label, x) { return [ - 'Sets the ' + label + ' formatting rule' + (x ? 'for `' + x + '` ' : ''), + 'Sets the ' + label + ' formatting rule' + (x ? ' for `' + x + '`' : ''), 'using d3 formatting mini-languages', 'which are very similar to those in Python. For numbers, see: ' + FORMAT_LINK + '.' ].join(' '); diff --git a/src/plots/cartesian/dragbox.js b/src/plots/cartesian/dragbox.js index 0aa0caceee2..26006c27c9d 100644 --- a/src/plots/cartesian/dragbox.js +++ b/src/plots/cartesian/dragbox.js @@ -3,7 +3,6 @@ var d3 = require('@plotly/d3'); var Lib = require('../../lib'); var numberFormat = Lib.numberFormat; -var tinycolor = require('tinycolor2'); var supportsPassive = require('has-passive-events'); var Registry = require('../../registry'); @@ -334,9 +333,9 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) { y0 = transformedCoords[1]; box = {l: x0, r: x0, w: 0, t: y0, b: y0, h: 0}; - lum = gd._hmpixcount ? - (gd._hmlumcount / gd._hmpixcount) : - tinycolor(gd._fullLayout.plot_bgcolor).getLuminance(); + lum = gd._hmpixcount + ? (gd._hmlumcount / gd._hmpixcount) + : Color.color(gd._fullLayout.plot_bgcolor).luminosity(); path0 = 'M0,0H' + pw + 'V' + ph + 'H0V0'; dimmed = false; zoomMode = 'xy'; @@ -732,7 +731,10 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) { for(i = 0; i < axList.length; i++) { var axListI = axList[i]; var axListIType = axListI[axisType]; - if(!axListI.fixedrange && axListIType.tickmode === 'sync') activeAxIds.push(axListIType._id); + var axId = axListIType._id; + if(!axListI.fixedrange && axListIType.tickmode === 'sync' && !activeAxIds.includes(axId)) { + activeAxIds.push(axId); + } } } diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index 25b60cfa28e..d7c207fd21f 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -17,7 +17,7 @@ var minorTickmode = { valType: 'enumerated', values: ['auto', 'linear', 'array'], editType: 'ticks', - impliedEdits: {tick0: undefined, dtick: undefined}, + impliedEdits: { tick0: undefined, dtick: undefined }, description: [ 'Sets the tick mode for this axis.', 'If *auto*, the number of ticks is set via `nticks`.', @@ -35,7 +35,8 @@ var tickmode = extendFlat({}, minorTickmode, { description: [ minorTickmode.description, 'If *sync*, the number of ticks will sync with the overlayed axis', - 'set by `overlaying` property.' + 'set by `overlaying` property. When no other tick info is provided,', + 'overlaying (non-categorical) axes default to *sync*, while other axes default to *auto*.', ].join(' ') }); @@ -57,7 +58,7 @@ function makeNticks(minor) { var tick0 = { valType: 'any', editType: 'ticks', - impliedEdits: {tickmode: 'linear'}, + impliedEdits: { tickmode: 'linear' }, description: [ 'Sets the placement of the first tick on this axis.', 'Use with `dtick`.', @@ -73,7 +74,7 @@ var tick0 = { var dtick = { valType: 'any', editType: 'ticks', - impliedEdits: {tickmode: 'linear'}, + impliedEdits: { tickmode: 'linear' }, description: [ 'Sets the step in-between ticks on this axis. Use with `tick0`.', 'Must be a positive number, or special strings available to *log* and *date* axes.', @@ -113,8 +114,8 @@ var ticks = { editType: 'ticks', description: [ 'Determines whether ticks are drawn or not.', - 'If **, this axis\' ticks are not drawn.', - 'If *outside* (*inside*), this axis\' are drawn outside (inside)', + "If **, this axis' ticks are not drawn.", + "If *outside* (*inside*), this axis' are drawn outside (inside)", 'the axis lines.' ].join(' ') }; @@ -127,7 +128,7 @@ function makeTicklen(minor) { description: 'Sets the tick length (in px).' }; - if(!minor) obj.dflt = 5; + if (!minor) obj.dflt = 5; return obj; } @@ -140,7 +141,7 @@ function makeTickwidth(minor) { description: 'Sets the tick width (in px).' }; - if(!minor) obj.dflt = 1; + if (!minor) obj.dflt = 1; return obj; } @@ -167,12 +168,12 @@ function makeGridwidth(minor) { description: 'Sets the width (in px) of the grid lines.' }; - if(!minor) obj.dflt = 1; + if (!minor) obj.dflt = 1; return obj; } -var griddash = extendFlat({}, dash, {editType: 'ticks'}); +var griddash = extendFlat({}, dash, { editType: 'ticks' }); var showgrid = { valType: 'boolean', @@ -212,7 +213,7 @@ module.exports = { }, font: fontAttrs({ editType: 'ticks', - description: 'Sets this axis\' title font.' + description: "Sets this axis' title font." }), standoff: { valType: 'number', @@ -267,7 +268,7 @@ module.exports = { values: [true, false, 'reversed', 'min reversed', 'max reversed', 'min', 'max'], dflt: true, editType: 'axrange', - impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, + impliedEdits: { 'range[0]': undefined, 'range[1]': undefined }, description: [ 'Determines whether or not the range of this axis is', 'computed in relation to the input data.', @@ -278,30 +279,26 @@ module.exports = { 'Using *max* applies autorange only to set the maximum.', 'Using *min reversed* applies autorange only to set the minimum on a reversed axis.', 'Using *max reversed* applies autorange only to set the maximum on a reversed axis.', - 'Using *reversed* applies autorange on both ends and reverses the axis direction.', + 'Using *reversed* applies autorange on both ends and reverses the axis direction.' ].join(' ') }, autorangeoptions: { minallowed: { valType: 'any', editType: 'plot', - impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, - description: [ - 'Use this value exactly as autorange minimum.' - ].join(' ') + impliedEdits: { 'range[0]': undefined, 'range[1]': undefined }, + description: ['Use this value exactly as autorange minimum.'].join(' ') }, maxallowed: { valType: 'any', editType: 'plot', - impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, - description: [ - 'Use this value exactly as autorange maximum.' - ].join(' ') + impliedEdits: { 'range[0]': undefined, 'range[1]': undefined }, + description: ['Use this value exactly as autorange maximum.'].join(' ') }, clipmin: { valType: 'any', editType: 'plot', - impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, + impliedEdits: { 'range[0]': undefined, 'range[1]': undefined }, description: [ 'Clip autorange minimum if it goes beyond this value.', 'Has no effect when `autorangeoptions.minallowed` is provided.' @@ -310,7 +307,7 @@ module.exports = { clipmax: { valType: 'any', editType: 'plot', - impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, + impliedEdits: { 'range[0]': undefined, 'range[1]': undefined }, description: [ 'Clip autorange maximum if it goes beyond this value.', 'Has no effect when `autorangeoptions.maxallowed` is provided.' @@ -320,9 +317,13 @@ module.exports = { valType: 'any', arrayOk: true, editType: 'plot', - impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, + impliedEdits: { 'range[0]': undefined, 'range[1]': undefined }, description: [ - 'Ensure this value is included in autorange.' + 'Extends the autorange to include this value or array of values,', + 'even when they fall outside the data range.', + 'Has no effect on endpoints set by `autorangeoptions.minallowed`', + 'or `autorangeoptions.maxallowed`.', + 'Subject to `autorangeoptions.clipmin` and `autorangeoptions.clipmax`.' ].join(' ') }, editType: 'plot' @@ -345,11 +346,11 @@ module.exports = { range: { valType: 'info_array', items: [ - {valType: 'any', editType: 'axrange', impliedEdits: {'^autorange': false}, anim: true}, - {valType: 'any', editType: 'axrange', impliedEdits: {'^autorange': false}, anim: true} + { valType: 'any', editType: 'axrange', impliedEdits: { '^autorange': false }, anim: true }, + { valType: 'any', editType: 'axrange', impliedEdits: { '^autorange': false }, anim: true } ], editType: 'axrange', - impliedEdits: {autorange: false}, + impliedEdits: { autorange: false }, anim: true, description: [ 'Sets the range of this axis.', @@ -362,33 +363,26 @@ module.exports = { 'If the axis `type` is *category*, it should be numbers,', 'using the scale where each category is assigned a serial', 'number from zero in the order it appears.', - 'Leaving either or both elements `null` impacts the default `autorange`.', + 'Leaving either or both elements `null` impacts the default `autorange`.' ].join(' ') }, minallowed: { valType: 'any', editType: 'plot', - impliedEdits: {'^autorange': false}, - description: [ - 'Determines the minimum range of this axis.' - ].join(' ') + impliedEdits: { '^autorange': false }, + description: ['Determines the minimum range of this axis.'].join(' ') }, maxallowed: { valType: 'any', editType: 'plot', - impliedEdits: {'^autorange': false}, - description: [ - 'Determines the maximum range of this axis.' - ].join(' ') + impliedEdits: { '^autorange': false }, + description: ['Determines the maximum range of this axis.'].join(' ') }, fixedrange: { valType: 'boolean', dflt: false, editType: 'calc', - description: [ - 'Determines whether or not this axis is zoom-able.', - 'If true, then zoom is disabled.' - ].join(' ') + description: ['Determines whether or not this axis is zoom-able.', 'If true, then zoom is disabled.'].join(' ') }, modebardisable: { valType: 'flaglist', @@ -405,8 +399,8 @@ module.exports = { insiderange: { valType: 'info_array', items: [ - {valType: 'any', editType: 'plot'}, - {valType: 'any', editType: 'plot'} + { valType: 'any', editType: 'plot' }, + { valType: 'any', editType: 'plot' } ], editType: 'plot', description: [ @@ -421,11 +415,7 @@ module.exports = { // values are any opposite-letter axis id, or `false`. scaleanchor: { valType: 'enumerated', - values: [ - constants.idRegex.x.toString(), - constants.idRegex.y.toString(), - false - ], + values: [constants.idRegex.x.toString(), constants.idRegex.y.toString(), false], editType: 'plot', description: [ 'If set to another axis id (e.g. `x2`, `y`), the range of this axis', @@ -488,10 +478,7 @@ module.exports = { }, matches: { valType: 'enumerated', - values: [ - constants.idRegex.x.toString(), - constants.idRegex.y.toString() - ], + values: [constants.idRegex.x.toString(), constants.idRegex.y.toString()], editType: 'calc', description: [ 'If set to another axis id (e.g. `x2`, `y`), the range of this axis', @@ -518,8 +505,8 @@ module.exports = { bounds: { valType: 'info_array', items: [ - {valType: 'any', editType: 'calc'}, - {valType: 'any', editType: 'calc'} + { valType: 'any', editType: 'calc' }, + { valType: 'any', editType: 'calc' } ], editType: 'calc', description: [ @@ -534,16 +521,16 @@ module.exports = { editType: 'calc', description: [ 'Determines a pattern on the time line that generates breaks.', - 'If *' + DAY_OF_WEEK + '* - days of the week in English e.g. \'Sunday\' or `\sun\`', + 'If *' + DAY_OF_WEEK + "* - days of the week in English e.g. 'Sunday' or `\sun\`", '(matching is case-insensitive and considers only the first three characters),', 'as well as Sunday-based integers between 0 and 6.', 'If *' + HOUR + '* - hour (24-hour clock) as decimal numbers between 0 and 24.', 'for more info.', 'Examples:', - '- { pattern: \'' + DAY_OF_WEEK + '\', bounds: [6, 1] }', - ' or simply { bounds: [\'sat\', \'mon\'] }', + "- { pattern: '" + DAY_OF_WEEK + "', bounds: [6, 1] }", + " or simply { bounds: ['sat', 'mon'] }", ' breaks from Saturday to Monday (i.e. skips the weekends).', - '- { pattern: \'' + HOUR + '\', bounds: [17, 8] }', + "- { pattern: '" + HOUR + "', bounds: [17, 8] }", ' breaks from 5pm to 8am (i.e. skips non-work hours).' ].join(' ') }, @@ -568,10 +555,7 @@ module.exports = { editType: 'calc', min: 0, dflt: ONEDAY, - description: [ - 'Sets the size of each `values` item.', - 'The default is one day in milliseconds.' - ].join(' ') + description: ['Sets the size of each `values` item.', 'The default is one day in milliseconds.'].join(' ') }, /* @@ -667,11 +651,16 @@ module.exports = { ticklabelposition: { valType: 'enumerated', values: [ - 'outside', 'inside', - 'outside top', 'inside top', - 'outside left', 'inside left', - 'outside right', 'inside right', - 'outside bottom', 'inside bottom' + 'outside', + 'inside', + 'outside top', + 'inside top', + 'outside left', + 'inside left', + 'outside right', + 'inside right', + 'outside bottom', + 'inside bottom' ], dflt: 'outside', editType: 'calc', @@ -690,11 +679,7 @@ module.exports = { }, ticklabeloverflow: { valType: 'enumerated', - values: [ - 'allow', - 'hide past div', - 'hide past domain' - ], + values: ['allow', 'hide past div', 'hide past domain'], editType: 'calc', description: [ 'Determines how we handle tick labels that would overflow either the graph div or the domain of the axis.', @@ -772,7 +757,7 @@ module.exports = { editType: 'ticks', description: [ 'Replacement text for specific tick or hover labels.', - 'For example using {US: \'USA\', CA: \'Canada\'} changes US to USA', + "For example using {US: 'USA', CA: 'Canada'} changes US to USA", 'and CA to Canada. The labels we would have shown must match', 'the keys exactly, after adding any tickprefix or ticksuffix.', 'For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash.', @@ -787,10 +772,7 @@ module.exports = { extras: [true, false], dflt: false, editType: 'ticks', - description: [ - 'Determines whether long tick labels automatically grow the figure', - 'margins.' - ].join(' ') + description: ['Determines whether long tick labels automatically grow the figure', 'margins.'].join(' ') }, showspikes: { valType: 'boolean', @@ -813,7 +795,7 @@ module.exports = { editType: 'none', description: 'Sets the width (in px) of the zero line.' }, - spikedash: extendFlat({}, dash, {dflt: 'dash', editType: 'none'}), + spikedash: extendFlat({}, dash, { dflt: 'dash', editType: 'none' }), spikemode: { valType: 'flaglist', flags: ['toaxis', 'across', 'marker'], @@ -821,7 +803,7 @@ module.exports = { editType: 'none', description: [ 'Determines the drawing mode for the spike line', - 'If *toaxis*, the line is drawn from the data point to the axis the ', + 'If *toaxis*, the line is drawn from the data point to the axis the', 'series is plotted on.', 'If *across*, the line is drawn across the entire plot area, and', @@ -923,7 +905,7 @@ module.exports = { 'If *power*, 1x10^9 (with 9 in a super script).', 'If *SI*, 1G.', 'If *B*, 1B.', - + '*SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12).', '*SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30).', 'If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule', @@ -944,9 +926,7 @@ module.exports = { valType: 'boolean', dflt: false, editType: 'ticks', - description: [ - 'If "true", even 4-digit integers are separated' - ].join(' ') + description: ['If "true", even 4-digit integers are separated'].join(' ') }, tickformat: { valType: 'string', @@ -967,8 +947,8 @@ module.exports = { dtickrange: { valType: 'info_array', items: [ - {valType: 'any', editType: 'ticks'}, - {valType: 'any', editType: 'ticks'} + { valType: 'any', editType: 'ticks' }, + { valType: 'any', editType: 'ticks' } ], editType: 'ticks', description: [ @@ -981,9 +961,7 @@ module.exports = { valType: 'string', dflt: '', editType: 'ticks', - description: [ - 'string - dtickformat for described zoom level, the same as *tickformat*' - ].join(' ') + description: ['string - dtickformat for described zoom level, the same as *tickformat*'].join(' ') }, editType: 'ticks' }), @@ -994,7 +972,7 @@ module.exports = { description: descriptionWithDates('hover text') }, unifiedhovertitle: { - text : { + text: { valType: 'string', dflt: '', editType: 'none', @@ -1010,9 +988,7 @@ module.exports = { valType: 'boolean', dflt: false, editType: 'ticks+layoutstyle', - description: [ - 'Determines whether or not a line bounding this axis is drawn.' - ].join(' ') + description: ['Determines whether or not a line bounding this axis is drawn.'].join(' ') }, linecolor: { valType: 'color', @@ -1054,8 +1030,8 @@ module.exports = { editType: 'plot', description: [ 'Sets the layer on which this zeroline is displayed.', - 'If *above traces*, this zeroline is displayed above all the subplot\'s traces', - 'If *below traces*, this zeroline is displayed below all the subplot\'s traces,', + "If *above traces*, this zeroline is displayed above all the subplot's traces", + "If *below traces*, this zeroline is displayed below all the subplot's traces,", 'but above the grid lines. Limitation: *zerolinelayer* currently has no effect', 'if the *zorder* property is set on any trace.' ].join(' ') @@ -1081,19 +1057,13 @@ module.exports = { valType: 'color', dflt: colorAttrs.defaultLine, editType: 'ticks', - description: [ - 'Sets the color of the dividers', - 'Only has an effect on *multicategory* axes.' - ].join(' ') + description: ['Sets the color of the dividers', 'Only has an effect on *multicategory* axes.'].join(' ') }, dividerwidth: { valType: 'number', dflt: 1, editType: 'ticks', - description: [ - 'Sets the width (in px) of the dividers', - 'Only has an effect on *multicategory* axes.' - ].join(' ') + description: ['Sets the width (in px) of the dividers', 'Only has an effect on *multicategory* axes.'].join(' ') }, // TODO dividerlen: that would override "to label base" length? @@ -1102,16 +1072,12 @@ module.exports = { // values are any opposite-letter axis id anchor: { valType: 'enumerated', - values: [ - 'free', - constants.idRegex.x.toString(), - constants.idRegex.y.toString() - ], + values: ['free', constants.idRegex.x.toString(), constants.idRegex.y.toString()], editType: 'plot', description: [ 'If set to an opposite-letter axis id (e.g. `x2`, `y`), this axis is bound to', 'the corresponding opposite-letter axis.', - 'If set to *free*, this axis\' position is determined by `position`.' + "If set to *free*, this axis' position is determined by `position`." ].join(' ') }, // side: not used directly, as values depend on direction @@ -1131,11 +1097,7 @@ module.exports = { // itself overlaying anything overlaying: { valType: 'enumerated', - values: [ - 'free', - constants.idRegex.x.toString(), - constants.idRegex.y.toString() - ], + values: ['free', constants.idRegex.x.toString(), constants.idRegex.y.toString()], editType: 'plot', description: [ 'If set a same-letter axis id, this axis is overlaid on top of', @@ -1175,7 +1137,7 @@ module.exports = { 'Determines how minor log labels are displayed.', 'If *small digits*, small digits i.e. 2 or 5 are displayed.', 'If *complete*, complete digits are displayed.', - 'If *none*, no labels are displayed.', + 'If *none*, no labels are displayed.' ].join(' ') }, @@ -1186,8 +1148,8 @@ module.exports = { editType: 'plot', description: [ 'Sets the layer on which this axis is displayed.', - 'If *above traces*, this axis is displayed above all the subplot\'s traces', - 'If *below traces*, this axis is displayed below all the subplot\'s traces,', + "If *above traces*, this axis is displayed above all the subplot's traces", + "If *below traces*, this axis is displayed below all the subplot's traces,", 'but above the grid lines.', 'Useful when used together with scatter-like traces with `cliponaxis`', 'set to *false* to show markers and/or text nodes above this axis.' @@ -1196,14 +1158,12 @@ module.exports = { domain: { valType: 'info_array', items: [ - {valType: 'number', min: 0, max: 1, editType: 'plot'}, - {valType: 'number', min: 0, max: 1, editType: 'plot'} + { valType: 'number', min: 0, max: 1, editType: 'plot' }, + { valType: 'number', min: 0, max: 1, editType: 'plot' } ], dflt: [0, 1], editType: 'plot', - description: [ - 'Sets the domain of this axis (in plot fraction).' - ].join(' ') + description: ['Sets the domain of this axis (in plot fraction).'].join(' ') }, position: { valType: 'number', @@ -1226,7 +1186,7 @@ module.exports = { 'overlap with other axes with the same `overlaying` value.', 'This repositioning will account for any `shift` amount applied to other', 'axes on the same side with `autoshift` is set to true.', - 'Only has an effect if `anchor` is set to *free*.', + 'Only has an effect if `anchor` is set to *free*.' ].join(' ') }, shift: { @@ -1244,14 +1204,24 @@ module.exports = { categoryorder: { valType: 'enumerated', values: [ - 'trace', 'category ascending', 'category descending', 'array', - 'total ascending', 'total descending', - 'min ascending', 'min descending', - 'max ascending', 'max descending', - 'sum ascending', 'sum descending', - 'mean ascending', 'mean descending', - 'geometric mean ascending', 'geometric mean descending', - 'median ascending', 'median descending' + 'trace', + 'category ascending', + 'category descending', + 'array', + 'total ascending', + 'total descending', + 'min ascending', + 'min descending', + 'max ascending', + 'max descending', + 'sum ascending', + 'sum descending', + 'mean ascending', + 'mean descending', + 'geometric mean ascending', + 'geometric mean descending', + 'median ascending', + 'median descending' ], dflt: 'trace', editType: 'calc', @@ -1286,5 +1256,5 @@ module.exports = { 'Defaults to `layout.uirevision`.' ].join(' ') }, - editType: 'calc', + editType: 'calc' }; diff --git a/src/plots/cartesian/line_grid_defaults.js b/src/plots/cartesian/line_grid_defaults.js index 8808c31f7dd..bc31edc9f74 100644 --- a/src/plots/cartesian/line_grid_defaults.js +++ b/src/plots/cartesian/line_grid_defaults.js @@ -1,6 +1,6 @@ 'use strict'; -var colorMix = require('tinycolor2').mix; +const Color = require('../../components/color'); var colorAttrs = require('../../components/color/attributes'); var Lib = require('../../lib'); @@ -32,7 +32,7 @@ module.exports = function handleLineGridDefaults(containerIn, containerOut, coer delete containerOut.linewidth; } - var gridColorDflt = colorMix(dfltColor, opts.bgColor, opts.blend || colorAttrs.lightFraction).toRgbString(); + var gridColorDflt = Color.mix(dfltColor, opts.bgColor, opts.blend || colorAttrs.lightFraction); var gridColor = coerce2('gridcolor', gridColorDflt); var gridWidth = coerce2('gridwidth'); var gridDash = coerce2('griddash'); @@ -49,7 +49,7 @@ module.exports = function handleLineGridDefaults(containerIn, containerOut, coer } if(opts.hasMinor) { - var minorGridColorDflt = colorMix(containerOut.gridcolor, opts.bgColor, 67).toRgbString(); + var minorGridColorDflt = Color.mix(containerOut.gridcolor, opts.bgColor, 67); var minorGridColor = coerce2('minor.gridcolor', minorGridColorDflt); var minorGridWidth = coerce2('minor.gridwidth', containerOut.gridwidth || 1); var minorGridDash = coerce2('minor.griddash', containerOut.griddash || 'solid'); diff --git a/src/plots/cartesian/tick_value_defaults.js b/src/plots/cartesian/tick_value_defaults.js index 68b9207ee62..faa2d36f03b 100644 --- a/src/plots/cartesian/tick_value_defaults.js +++ b/src/plots/cartesian/tick_value_defaults.js @@ -5,8 +5,7 @@ var isArrayOrTypedArray = require('../../lib').isArrayOrTypedArray; var isTypedArraySpec = require('../../lib/array').isTypedArraySpec; var decodeTypedArraySpec = require('../../lib/array').decodeTypedArraySpec; -module.exports = function handleTickValueDefaults(containerIn, containerOut, coerce, axType, opts) { - if(!opts) opts = {}; +module.exports = function handleTickValueDefaults(containerIn, containerOut, coerce, axType, opts = {}) { var isMinor = opts.isMinor; var cIn = isMinor ? containerIn.minor || {} : containerIn; var cOut = isMinor ? containerOut.minor : containerOut; @@ -14,35 +13,40 @@ module.exports = function handleTickValueDefaults(containerIn, containerOut, coe function readInput(attr) { var v = cIn[attr]; - if(isTypedArraySpec(v)) v = decodeTypedArraySpec(v); + if (isTypedArraySpec(v)) v = decodeTypedArraySpec(v); - return ( - v !== undefined - ) ? v : (cOut._template || {})[attr]; + return v !== undefined ? v : (cOut._template || {})[attr]; } var _tick0 = readInput('tick0'); var _dtick = readInput('dtick'); var _tickvals = readInput('tickvals'); + var _overlaying = readInput('overlaying'); + var _categorical = axType === 'category' || axType === 'multicategory'; - var tickmodeDefault = isArrayOrTypedArray(_tickvals) ? 'array' : - _dtick ? 'linear' : - 'auto'; + var tickmodeDefault; + if (isArrayOrTypedArray(_tickvals)) { + tickmodeDefault = 'array'; + } else if (_dtick) { + tickmodeDefault = 'linear'; + } else if (_overlaying && !_categorical) { + tickmodeDefault = 'sync'; + } else { + tickmodeDefault = 'auto'; + } var tickmode = coerce(prefix + 'tickmode', tickmodeDefault); - if(tickmode === 'auto' || tickmode === 'sync') { + if (tickmode === 'auto' || tickmode === 'sync') { coerce(prefix + 'nticks'); - } else if(tickmode === 'linear') { + } else if (tickmode === 'linear') { // dtick is usually a positive number, but there are some // special strings available for log or date axes // tick0 also has special logic - var dtick = cOut.dtick = cleanTicks.dtick( - _dtick, axType); - cOut.tick0 = cleanTicks.tick0( - _tick0, axType, containerOut.calendar, dtick); - } else if(axType !== 'multicategory') { + var dtick = (cOut.dtick = cleanTicks.dtick(_dtick, axType)); + cOut.tick0 = cleanTicks.tick0(_tick0, axType, containerOut.calendar, dtick); + } else if (axType !== 'multicategory') { var tickvals = coerce(prefix + 'tickvals'); - if(tickvals === undefined) cOut.tickmode = 'auto'; - else if(!isMinor) coerce('ticktext'); + if (tickvals === undefined) cOut.tickmode = 'auto'; + else if (!isMinor) coerce('ticktext'); } }; diff --git a/src/plots/cartesian/type_defaults.js b/src/plots/cartesian/type_defaults.js index 1d1b0e03217..71a3cd83040 100644 --- a/src/plots/cartesian/type_defaults.js +++ b/src/plots/cartesian/type_defaults.js @@ -118,11 +118,9 @@ function getBoxPosLetter(trace) { function isBoxWithoutPositionCoords(trace, axLetter) { var posLetter = getBoxPosLetter(trace); var isBox = traceIs(trace, 'box-violin'); - var isCandlestick = traceIs(trace._fullInput || {}, 'candlestick'); return ( isBox && - !isCandlestick && axLetter === posLetter && trace[posLetter] === undefined && trace[posLetter + '0'] === undefined diff --git a/src/plots/domain.js b/src/plots/domain.js index 55a63c53e11..0897e70cae2 100644 --- a/src/plots/domain.js +++ b/src/plots/domain.js @@ -38,7 +38,7 @@ exports.attributes = function(opts, extra) { }; var namePart = opts.name ? opts.name + ' ' : ''; - var contPart = opts.trace ? 'trace ' : 'subplot '; + var contPart = opts.trace ? 'trace' : 'subplot'; var descPart = extra.description ? ' ' + extra.description : ''; var out = { @@ -47,7 +47,7 @@ exports.attributes = function(opts, extra) { 'Sets the horizontal domain of this ', namePart, contPart, - '(in plot fraction).', + ' (in plot fraction).', descPart ].join('') }), @@ -56,7 +56,7 @@ exports.attributes = function(opts, extra) { 'Sets the vertical domain of this ', namePart, contPart, - '(in plot fraction).', + ' (in plot fraction).', descPart ].join('') }), diff --git a/src/plots/geo/layout_attributes.js b/src/plots/geo/layout_attributes.js index b94cca3bec5..450db363233 100644 --- a/src/plots/geo/layout_attributes.js +++ b/src/plots/geo/layout_attributes.js @@ -5,19 +5,13 @@ var domainAttrs = require('../domain').attributes; var dash = require('../../components/drawing/attributes').dash; var constants = require('./constants'); var overrideAll = require('../../plot_api/edit_types').overrideAll; -var sortObjectKeys = require('../../lib/sort_object_keys'); +var sortObjectKeys = require('../../lib/sort_object_keys').default; var geoAxesAttrs = { range: { valType: 'info_array', - items: [ - {valType: 'number'}, - {valType: 'number'} - ], - description: [ - 'Sets the range of this axis (in degrees),', - 'sets the map\'s clipped coordinates.' - ].join(' ') + items: [{ valType: 'number' }, { valType: 'number' }], + description: ['Sets the range of this axis (in degrees),', "sets the map's clipped coordinates."].join(' ') }, showgrid: { valType: 'boolean', @@ -27,297 +21,290 @@ var geoAxesAttrs = { tick0: { valType: 'number', dflt: 0, - description: [ - 'Sets the graticule\'s starting tick longitude/latitude.' - ].join(' ') + description: ["Sets the graticule's starting tick longitude/latitude."].join(' ') }, dtick: { valType: 'number', - description: [ - 'Sets the graticule\'s longitude/latitude tick step.' - ].join(' ') + description: ["Sets the graticule's longitude/latitude tick step."].join(' ') }, gridcolor: { valType: 'color', dflt: colorAttrs.lightLine, - description: [ - 'Sets the graticule\'s stroke color.' - ].join(' ') + description: ["Sets the graticule's stroke color."].join(' ') }, gridwidth: { valType: 'number', min: 0, dflt: 1, - description: [ - 'Sets the graticule\'s stroke width (in px).' - ].join(' ') + description: ["Sets the graticule's stroke width (in px)."].join(' ') }, griddash: dash }; -var attrs = module.exports = overrideAll({ - domain: domainAttrs({name: 'geo'}, { - description: [ - 'Note that geo subplots are constrained by domain.', - 'In general, when `projection.scale` is set to 1.', - 'a map will fit either its x or y domain, but not both.' - ].join(' ') - }), +var attrs = (module.exports = overrideAll( + { + domain: domainAttrs( + { name: 'geo' }, + { + description: [ + 'Note that geo subplots are constrained by domain.', + 'In general, when `projection.scale` is set to 1.', + 'a map will fit either its x or y domain, but not both.' + ].join(' ') + } + ), - fitbounds: { - valType: 'enumerated', - values: [false, 'locations', 'geojson'], - dflt: false, - editType: 'plot', - description: [ - 'Determines if this subplot\'s view settings are auto-computed to fit trace data.', + fitbounds: { + valType: 'enumerated', + values: [false, 'locations', 'geojson'], + dflt: false, + editType: 'plot', + description: [ + "Determines if this subplot's view settings are auto-computed to fit trace data.", - 'On scoped maps, setting `fitbounds` leads to `center.lon` and `center.lat` getting auto-filled.', + 'On scoped maps, setting `fitbounds` leads to `center.lon` and `center.lat` getting auto-filled.', - 'On maps with a non-clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`,', - 'and `projection.rotation.lon` getting auto-filled.', + 'On maps with a non-clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`,', + 'and `projection.rotation.lon` getting auto-filled.', - 'On maps with a clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`,', - '`projection.rotation.lon`, `projection.rotation.lat`, `lonaxis.range` and `lataxis.range`', - 'getting auto-filled.', + 'On maps with a clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`,', + '`projection.rotation.lon`, `projection.rotation.lat`, `lonaxis.range` and `lataxis.range`', + 'getting auto-filled.', - // TODO we should auto-fill `projection.parallels` for maps - // with conic projection, but how? + // TODO we should auto-fill `projection.parallels` for maps + // with conic projection, but how? - 'If *locations*, only the trace\'s visible locations are considered in the `fitbounds` computations.', - 'If *geojson*, the entire trace input `geojson` (if provided) is considered in the `fitbounds` computations,', - 'Defaults to *false*.' - ].join(' ') - }, + "If *locations*, only the trace's visible locations are considered in the `fitbounds` computations.", + 'If *geojson*, the entire trace input `geojson` (if provided) is considered in the `fitbounds` computations,', + 'Defaults to *false*.' + ].join(' ') + }, - resolution: { - valType: 'enumerated', - values: [110, 50], - dflt: 110, - coerceNumber: true, - description: [ - 'Sets the resolution of the base layers.', - 'The values have units of km/mm', - 'e.g. 110 corresponds to a scale ratio of 1:110,000,000.' - ].join(' ') - }, - scope: { - valType: 'enumerated', - values: sortObjectKeys(constants.scopeDefaults), - dflt: 'world', - description: 'Set the scope of the map.' - }, - projection: { - type: { + resolution: { + valType: 'enumerated', + values: [110, 50], + dflt: 110, + coerceNumber: true, + description: [ + 'Sets the resolution of the base layers.', + 'The values have units of km/mm', + 'e.g. 110 corresponds to a scale ratio of 1:110,000,000.' + ].join(' ') + }, + scope: { valType: 'enumerated', - values: sortObjectKeys(constants.projNames), - description: 'Sets the projection type.' + values: sortObjectKeys(constants.scopeDefaults), + dflt: 'world', + description: 'Set the scope of the map.' }, - rotation: { - lon: { + projection: { + type: { + valType: 'enumerated', + values: sortObjectKeys(constants.projNames), + description: 'Sets the projection type.' + }, + rotation: { + lon: { + valType: 'number', + description: [ + 'Rotates the map along parallels', + '(in degrees East).', + 'Defaults to the center of the `lonaxis.range` values.' + ].join(' ') + }, + lat: { + valType: 'number', + description: ['Rotates the map along meridians', '(in degrees North).'].join(' ') + }, + roll: { + valType: 'number', + description: [ + 'Roll the map (in degrees)', + 'For example, a roll of *180* makes the map appear upside down.' + ].join(' ') + } + }, + tilt: { valType: 'number', + dflt: 0, description: [ - 'Rotates the map along parallels', - '(in degrees East).', - 'Defaults to the center of the `lonaxis.range` values.' + 'For satellite projection type only.', + 'Sets the tilt angle of perspective projection.' ].join(' ') }, - lat: { + distance: { + valType: 'number', + min: 1.001, + dflt: 2, + description: [ + 'For satellite projection type only.', + 'Sets the distance from the center of the sphere to the point of view', + 'as a proportion of the sphere’s radius.' + ].join(' ') + }, + parallels: { + valType: 'info_array', + items: [{ valType: 'number' }, { valType: 'number' }], + description: [ + 'For conic projection types only.', + 'Sets the parallels (tangent, secant)', + 'where the cone intersects the sphere.' + ].join(' ') + }, + scale: { + valType: 'number', + min: 0, + dflt: 1, + description: [ + 'Zooms in or out on the map view.', + 'A scale of *1* corresponds to the largest zoom level', + "that fits the map's lon and lat ranges. " + ].join(' ') + } + }, + center: { + lon: { valType: 'number', description: [ - 'Rotates the map along meridians', - '(in degrees North).' + "Sets the longitude of the map's center.", + "By default, the map's longitude center lies at the middle of the longitude range", + 'for scoped projection and above `projection.rotation.lon` otherwise.' ].join(' ') }, - roll: { + lat: { valType: 'number', description: [ - 'Roll the map (in degrees)', - 'For example, a roll of *180* makes the map appear upside down.' + "Sets the latitude of the map's center.", + "For all projection types, the map's latitude center lies", + 'at the middle of the latitude range by default.' ].join(' ') } }, - tilt: { + visible: { + valType: 'boolean', + dflt: true, + description: 'Sets the default visibility of the base layers.' + }, + showcoastlines: { + valType: 'boolean', + description: 'Sets whether or not the coastlines are drawn.' + }, + coastlinecolor: { + valType: 'color', + dflt: colorAttrs.defaultLine, + description: 'Sets the coastline color.' + }, + coastlinewidth: { valType: 'number', - dflt: 0, - description: [ - 'For satellite projection type only.', - 'Sets the tilt angle of perspective projection.' - ].join(' ') + min: 0, + dflt: 1, + description: 'Sets the coastline stroke width (in px).' + }, + showland: { + valType: 'boolean', + dflt: false, + description: 'Sets whether or not land masses are filled in color.' }, - distance: { + landcolor: { + valType: 'color', + dflt: constants.landColor, + description: 'Sets the land mass color.' + }, + showocean: { + valType: 'boolean', + dflt: false, + description: 'Sets whether or not oceans are filled in color.' + }, + oceancolor: { + valType: 'color', + dflt: constants.waterColor, + description: 'Sets the ocean color' + }, + showlakes: { + valType: 'boolean', + dflt: false, + description: 'Sets whether or not lakes are drawn.' + }, + lakecolor: { + valType: 'color', + dflt: constants.waterColor, + description: 'Sets the color of the lakes.' + }, + showrivers: { + valType: 'boolean', + dflt: false, + description: 'Sets whether or not rivers are drawn.' + }, + rivercolor: { + valType: 'color', + dflt: constants.waterColor, + description: 'Sets color of the rivers.' + }, + riverwidth: { valType: 'number', - min: 1.001, - dflt: 2, - description: [ - 'For satellite projection type only.', - 'Sets the distance from the center of the sphere to the point of view', - 'as a proportion of the sphere’s radius.' - ].join(' ') + min: 0, + dflt: 1, + description: 'Sets the stroke width (in px) of the rivers.' }, - parallels: { - valType: 'info_array', - items: [ - {valType: 'number'}, - {valType: 'number'} - ], - description: [ - 'For conic projection types only.', - 'Sets the parallels (tangent, secant)', - 'where the cone intersects the sphere.' - ].join(' ') + showcountries: { + valType: 'boolean', + description: 'Sets whether or not country boundaries are drawn.' + }, + countrycolor: { + valType: 'color', + dflt: colorAttrs.defaultLine, + description: 'Sets line color of the country boundaries.' }, - scale: { + countrywidth: { valType: 'number', min: 0, dflt: 1, + description: 'Sets line width (in px) of the country boundaries.' + }, + showsubunits: { + valType: 'boolean', description: [ - 'Zooms in or out on the map view.', - 'A scale of *1* corresponds to the largest zoom level', - 'that fits the map\'s lon and lat ranges. ' + 'Sets whether or not boundaries of subunits within countries', + '(e.g. states, provinces) are drawn.' ].join(' ') }, - }, - center: { - lon: { + subunitcolor: { + valType: 'color', + dflt: colorAttrs.defaultLine, + description: 'Sets the color of the subunits boundaries.' + }, + subunitwidth: { valType: 'number', - description: [ - 'Sets the longitude of the map\'s center.', - 'By default, the map\'s longitude center lies at the middle of the longitude range', - 'for scoped projection and above `projection.rotation.lon` otherwise.' - ].join(' ') + min: 0, + dflt: 1, + description: 'Sets the stroke width (in px) of the subunits boundaries.' + }, + showframe: { + valType: 'boolean', + description: 'Sets whether or not a frame is drawn around the map.' }, - lat: { + framecolor: { + valType: 'color', + dflt: colorAttrs.defaultLine, + description: 'Sets the color the frame.' + }, + framewidth: { valType: 'number', - description: [ - 'Sets the latitude of the map\'s center.', - 'For all projection types, the map\'s latitude center lies', - 'at the middle of the latitude range by default.' - ].join(' ') - } - }, - visible: { - valType: 'boolean', - dflt: true, - description: 'Sets the default visibility of the base layers.' - }, - showcoastlines: { - valType: 'boolean', - description: 'Sets whether or not the coastlines are drawn.' - }, - coastlinecolor: { - valType: 'color', - dflt: colorAttrs.defaultLine, - description: 'Sets the coastline color.' - }, - coastlinewidth: { - valType: 'number', - min: 0, - dflt: 1, - description: 'Sets the coastline stroke width (in px).' - }, - showland: { - valType: 'boolean', - dflt: false, - description: 'Sets whether or not land masses are filled in color.' - }, - landcolor: { - valType: 'color', - dflt: constants.landColor, - description: 'Sets the land mass color.' - }, - showocean: { - valType: 'boolean', - dflt: false, - description: 'Sets whether or not oceans are filled in color.' - }, - oceancolor: { - valType: 'color', - dflt: constants.waterColor, - description: 'Sets the ocean color' - }, - showlakes: { - valType: 'boolean', - dflt: false, - description: 'Sets whether or not lakes are drawn.' - }, - lakecolor: { - valType: 'color', - dflt: constants.waterColor, - description: 'Sets the color of the lakes.' - }, - showrivers: { - valType: 'boolean', - dflt: false, - description: 'Sets whether or not rivers are drawn.' - }, - rivercolor: { - valType: 'color', - dflt: constants.waterColor, - description: 'Sets color of the rivers.' - }, - riverwidth: { - valType: 'number', - min: 0, - dflt: 1, - description: 'Sets the stroke width (in px) of the rivers.' - }, - showcountries: { - valType: 'boolean', - description: 'Sets whether or not country boundaries are drawn.' - }, - countrycolor: { - valType: 'color', - dflt: colorAttrs.defaultLine, - description: 'Sets line color of the country boundaries.' - }, - countrywidth: { - valType: 'number', - min: 0, - dflt: 1, - description: 'Sets line width (in px) of the country boundaries.' - }, - showsubunits: { - valType: 'boolean', - description: [ - 'Sets whether or not boundaries of subunits within countries', - '(e.g. states, provinces) are drawn.' - ].join(' ') - }, - subunitcolor: { - valType: 'color', - dflt: colorAttrs.defaultLine, - description: 'Sets the color of the subunits boundaries.' - }, - subunitwidth: { - valType: 'number', - min: 0, - dflt: 1, - description: 'Sets the stroke width (in px) of the subunits boundaries.' - }, - showframe: { - valType: 'boolean', - description: 'Sets whether or not a frame is drawn around the map.' - }, - framecolor: { - valType: 'color', - dflt: colorAttrs.defaultLine, - description: 'Sets the color the frame.' - }, - framewidth: { - valType: 'number', - min: 0, - dflt: 1, - description: 'Sets the stroke width (in px) of the frame.' - }, - bgcolor: { - valType: 'color', - dflt: colorAttrs.background, - description: 'Set the background color of the map' + min: 0, + dflt: 1, + description: 'Sets the stroke width (in px) of the frame.' + }, + bgcolor: { + valType: 'color', + dflt: colorAttrs.background, + description: 'Set the background color of the map' + }, + lonaxis: geoAxesAttrs, + lataxis: geoAxesAttrs }, - lonaxis: geoAxesAttrs, - lataxis: geoAxesAttrs -}, 'plot', 'from-root'); + 'plot', + 'from-root' +)); // set uirevision outside of overrideAll so it can be `editType: 'none'` attrs.uirevision = { diff --git a/src/plots/get_data.js b/src/plots/get_data.js index 7c0dcc2b31a..c32f9d897f9 100644 --- a/src/plots/get_data.js +++ b/src/plots/get_data.js @@ -65,7 +65,7 @@ exports.getModuleCalcData = function(calcdata, arg1, arg2) { var filterByZ = (trace.zorder !== undefined); // N.B. // - 'legendonly' traces do not make it past here - // - skip over 'visible' traces that got trimmed completely during calc transforms + // - skip over 'visible' traces with no data points if(trace.visible !== true || trace._length === 0) continue; // group calcdata trace not by 'module' (as the name of this function diff --git a/src/plots/gl3d/layout/axis_defaults.js b/src/plots/gl3d/layout/axis_defaults.js index ae041637a70..2336dc3d8f2 100644 --- a/src/plots/gl3d/layout/axis_defaults.js +++ b/src/plots/gl3d/layout/axis_defaults.js @@ -1,6 +1,6 @@ 'use strict'; -var colorMix = require('tinycolor2').mix; +const Color = require('../../../components/color'); var Lib = require('../../../lib'); var Template = require('../../../plot_api/plot_template'); @@ -58,7 +58,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, options) { }, options.fullLayout); - coerce('gridcolor', colorMix(containerOut.color, options.bgColor, gridLightness).toRgbString()); + coerce('gridcolor', Color.mix(containerOut.color, options.bgColor, gridLightness)); coerce('title.text', axName[0]); // shouldn't this be on-par with 2D? containerOut.setScale = Lib.noop; diff --git a/src/plots/layout_attributes.js b/src/plots/layout_attributes.js index 60540e53b94..20bfc66c11c 100644 --- a/src/plots/layout_attributes.js +++ b/src/plots/layout_attributes.js @@ -318,17 +318,6 @@ module.exports = { 'other locales may alter this default.' ].join(' ') }, - hidesources: { - valType: 'boolean', - dflt: false, - editType: 'plot', - description: [ - 'Determines whether or not a text link citing the data source is', - 'placed at the bottom-right cored of the figure.', - 'Has only an effect only on graphs that have been generated via', - 'forked graphs from the Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise).' - ].join(' ') - }, showlegend: { // handled in legend.supplyLayoutDefaults // but included here because it's not in the legend object diff --git a/src/plots/map/constants.js b/src/plots/map/constants.js index 7d48768d8d7..52117231fae 100644 --- a/src/plots/map/constants.js +++ b/src/plots/map/constants.js @@ -1,10 +1,9 @@ 'use strict'; -var sortObjectKeys = require('../../lib/sort_object_keys'); +var sortObjectKeys = require('../../lib/sort_object_keys').default; var arcgisSatHybrid = require('./styles/arcgis-sat-hybrid'); // https://raw.githubusercontent.com/go2garret/maps/v1.0.0/LICENSE var arcgisSat = require('./styles/arcgis-sat'); - var OSM = '© OpenStreetMap contributors'; var cartoPositron = 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json'; @@ -14,7 +13,6 @@ var cartoPositronNoLabels = 'https://basemaps.cartocdn.com/gl/positron-nolabels- var cartoDarkmatterNoLabels = 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json'; var cartoVoyagerNoLabels = 'https://basemaps.cartocdn.com/gl/voyager-nolabels-gl-style/style.json'; - var stylesMap = { basic: cartoVoyager, streets: cartoVoyager, @@ -30,32 +28,34 @@ var stylesMap = { 'plotly-osm-tiles': { type: 'raster', attribution: OSM, - tiles: [ - 'https://tile.openstreetmap.org/{z}/{x}/{y}.png' - ], + tiles: ['https://tile.openstreetmap.org/{z}/{x}/{y}.png'], tileSize: 256 } }, - layers: [{ - id: 'plotly-osm-tiles', - type: 'raster', - source: 'plotly-osm-tiles', - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'plotly-osm-tiles', + type: 'raster', + source: 'plotly-osm-tiles', + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'white-bg': { id: 'white-bg', version: 8, sources: {}, - layers: [{ - id: 'white-bg', - type: 'background', - paint: {'background-color': '#FFFFFF'}, - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'white-bg', + type: 'background', + paint: { 'background-color': '#FFFFFF' }, + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'carto-positron': cartoPositron, @@ -63,7 +63,7 @@ var stylesMap = { 'carto-voyager': cartoVoyager, 'carto-positron-nolabels': cartoPositronNoLabels, 'carto-darkmatter-nolabels': cartoDarkmatterNoLabels, - 'carto-voyager-nolabels': cartoVoyagerNoLabels, + 'carto-voyager-nolabels': cartoVoyagerNoLabels }; var styleValuesMap = sortObjectKeys(stylesMap); @@ -76,15 +76,11 @@ module.exports = { traceLayerPrefix: 'plotly-trace-layer-', layoutLayerPrefix: 'plotly-layout-layer-', - missingStyleErrorMsg: [ 'No valid maplibre style found, please set `map.style` to one of:', styleValuesMap.join(', '), 'or use a tile service.' ].join('\n'), - - mapOnErrorMsg: 'Map error.', - - + mapOnErrorMsg: 'Map error.' }; diff --git a/src/plots/map/layers.js b/src/plots/map/layers.js index be32c2dc21b..ca4b4aa7b26 100644 --- a/src/plots/map/layers.js +++ b/src/plots/map/layers.js @@ -230,7 +230,7 @@ function convertOpts(opts) { var textOpts = convertTextOpts(symbol.textposition, symbol.iconsize); Lib.extendFlat(layout, { - 'icon-image': symbol.icon + '-15', + 'icon-image': symbol.icon, 'icon-size': symbol.iconsize / 10, 'text-field': symbol.text, diff --git a/src/plots/map/map.js b/src/plots/map/map.js index 9a397743482..6c377d456d1 100644 --- a/src/plots/map/map.js +++ b/src/plots/map/map.js @@ -107,14 +107,14 @@ proto.createMap = function(calcData, fullLayout, resolve, reject) { var requestedIcons = {}; map.on('styleimagemissing', function(e) { var id = e.id; - if(!requestedIcons[id] && id.includes('-15')) { + if(!requestedIcons[id] && /^[a-zA-Z0-9-]+$/.test(id)) { requestedIcons[id] = true; var img = new Image(15, 15); img.onload = function() { - map.addImage(id, img); + map.addImage(id, img, {sdf: true}); }; img.crossOrigin = 'Anonymous'; - img.src = 'https://unpkg.com/maki@2.1.0/icons/' + id + '.svg'; + img.src = "https://cdn.jsdelivr.net/npm/@mapbox/maki@8.2.0/icons/" + id + '.svg'; } }); diff --git a/src/plots/mapbox/constants.js b/src/plots/mapbox/constants.js index 86e955cb4cd..8a8eeae0f76 100644 --- a/src/plots/mapbox/constants.js +++ b/src/plots/mapbox/constants.js @@ -1,14 +1,11 @@ 'use strict'; -var sortObjectKeys = require('../../lib/sort_object_keys'); +var sortObjectKeys = require('../../lib/sort_object_keys').default; var requiredVersion = '1.13.4'; var OSM = '© OpenStreetMap contributors'; -var carto = [ - '© Carto', - OSM -].join(' '); +var carto = ['© Carto', OSM].join(' '); var stamenTerrainOrToner = [ 'Map tiles by Stamen Design', @@ -41,26 +38,30 @@ var stylesNonMapbox = { tileSize: 256 } }, - layers: [{ - id: 'plotly-osm-tiles', - type: 'raster', - source: 'plotly-osm-tiles', - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'plotly-osm-tiles', + type: 'raster', + source: 'plotly-osm-tiles', + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'white-bg': { id: 'white-bg', version: 8, sources: {}, - layers: [{ - id: 'white-bg', - type: 'background', - paint: {'background-color': '#FFFFFF'}, - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'white-bg', + type: 'background', + paint: { 'background-color': '#FFFFFF' }, + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'carto-positron': { @@ -74,13 +75,15 @@ var stylesNonMapbox = { tileSize: 256 } }, - layers: [{ - id: 'plotly-carto-positron', - type: 'raster', - source: 'plotly-carto-positron', - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'plotly-carto-positron', + type: 'raster', + source: 'plotly-carto-positron', + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'carto-darkmatter': { @@ -94,13 +97,15 @@ var stylesNonMapbox = { tileSize: 256 } }, - layers: [{ - id: 'plotly-carto-darkmatter', - type: 'raster', - source: 'plotly-carto-darkmatter', - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'plotly-carto-darkmatter', + type: 'raster', + source: 'plotly-carto-darkmatter', + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'stamen-terrain': { @@ -114,13 +119,15 @@ var stylesNonMapbox = { tileSize: 256 } }, - layers: [{ - id: 'plotly-stamen-terrain', - type: 'raster', - source: 'plotly-stamen-terrain', - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'plotly-stamen-terrain', + type: 'raster', + source: 'plotly-stamen-terrain', + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'stamen-toner': { @@ -134,13 +141,15 @@ var stylesNonMapbox = { tileSize: 256 } }, - layers: [{ - id: 'plotly-stamen-toner', - type: 'raster', - source: 'plotly-stamen-toner', - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'plotly-stamen-toner', + type: 'raster', + source: 'plotly-stamen-toner', + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'stamen-watercolor': { @@ -154,13 +163,15 @@ var stylesNonMapbox = { tileSize: 256 } }, - layers: [{ - id: 'plotly-stamen-watercolor', - type: 'raster', - source: 'plotly-stamen-watercolor', - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'plotly-stamen-watercolor', + type: 'raster', + source: 'plotly-stamen-watercolor', + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' } }; @@ -190,7 +201,7 @@ module.exports = { 'Missing Mapbox access token.', 'Mapbox trace type require a Mapbox access token to be registered.', 'For example:', - ' Plotly.newPlot(gd, data, layout, { mapboxAccessToken: \'my-access-token\' });', + " Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });", 'More info here: https://www.mapbox.com/help/define-access-token/' ].join('\n'), @@ -202,8 +213,7 @@ module.exports = { multipleTokensErrorMsg: [ 'Set multiple mapbox access token across different mapbox subplot,', - 'using first token found as mapbox-gl does not allow multiple' + - 'access tokens on the same page.' + 'using first token found as mapbox-gl does not allow multiple access tokens on the same page.' ].join('\n'), mapOnErrorMsg: 'Mapbox error.', @@ -231,8 +241,10 @@ module.exports = { 'ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner': 'display: none;', 'ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner': 'display: block; margin-top:2px', 'ctrl-attrib.mapboxgl-compact:hover': 'padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;', - 'ctrl-attrib.mapboxgl-compact::after': 'content: ""; cursor: pointer; position: absolute; background-image: url(\'data:image/svg+xml;charset=utf-8,%3Csvg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"%3E %3Cpath fill="%23333333" fill-rule="evenodd" d="M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0"/%3E %3C/svg%3E\'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;', - 'ctrl-attrib.mapboxgl-compact': 'min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;', + 'ctrl-attrib.mapboxgl-compact::after': + 'content: ""; cursor: pointer; position: absolute; background-image: url(\'data:image/svg+xml;charset=utf-8,%3Csvg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"%3E %3Cpath fill="%23333333" fill-rule="evenodd" d="M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0"/%3E %3C/svg%3E\'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;', + 'ctrl-attrib.mapboxgl-compact': + 'min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;', 'ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after': 'bottom: 0; right: 0', 'ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after': 'bottom: 0; left: 0', @@ -247,7 +259,8 @@ module.exports = { 'attrib-empty': 'display: none;', // Compact Mapbox logo without text - 'ctrl-logo': 'display:block; width: 21px; height: 21px; background-image: url(\'data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E %3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 21 21" style="enable-background:new 0 0 21 21;" xml:space="preserve"%3E%3Cg transform="translate(0,0.01)"%3E%3Cpath d="m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z" style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3Cpath d="M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpath d="M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpolygon points="11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 " style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3C/g%3E%3C/svg%3E\')' + 'ctrl-logo': + 'display:block; width: 21px; height: 21px; background-image: url(\'data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E %3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 21 21" style="enable-background:new 0 0 21 21;" xml:space="preserve"%3E%3Cg transform="translate(0,0.01)"%3E%3Cpath d="m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z" style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3Cpath d="M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpath d="M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpolygon points="11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 " style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3C/g%3E%3C/svg%3E\')' // Mapbox logo WITH text below (commented out for now) // 'ctrl-logo': 'width: 85px; height: 21px; margin: 0 0 -3px -3px; display: block; background-repeat: no-repeat; cursor: pointer; background-image: url(\'data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E%3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 84.49 21" style="enable-background:new 0 0 84.49 21;" xml:space="preserve"%3E%3Cg%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M83.25,14.26c0,0.12-0.09,0.21-0.21,0.21h-1.61c-0.13,0-0.24-0.06-0.3-0.17l-1.44-2.39l-1.44,2.39 c-0.06,0.11-0.18,0.17-0.3,0.17h-1.61c-0.04,0-0.08-0.01-0.12-0.03c-0.09-0.06-0.13-0.19-0.06-0.28l0,0l2.43-3.68L76.2,6.84 c-0.02-0.03-0.03-0.07-0.03-0.12c0-0.12,0.09-0.21,0.21-0.21h1.61c0.13,0,0.24,0.06,0.3,0.17l1.41,2.36l1.4-2.35 c0.06-0.11,0.18-0.17,0.3-0.17H83c0.04,0,0.08,0.01,0.12,0.03c0.09,0.06,0.13,0.19,0.06,0.28l0,0l-2.37,3.63l2.43,3.67 C83.24,14.18,83.25,14.22,83.25,14.26z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M66.24,9.59c-0.39-1.88-1.96-3.28-3.84-3.28c-1.03,0-2.03,0.42-2.73,1.18V3.51c0-0.13-0.1-0.23-0.23-0.23h-1.4 c-0.13,0-0.23,0.11-0.23,0.23v10.72c0,0.13,0.1,0.23,0.23,0.23h1.4c0.13,0,0.23-0.11,0.23-0.23V13.5c0.71,0.75,1.7,1.18,2.73,1.18 c1.88,0,3.45-1.41,3.84-3.29C66.37,10.79,66.37,10.18,66.24,9.59L66.24,9.59z M62.08,13c-1.32,0-2.39-1.11-2.41-2.48v-0.06 c0.02-1.38,1.09-2.48,2.41-2.48s2.42,1.12,2.42,2.51S63.41,13,62.08,13z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M71.67,6.32c-1.98-0.01-3.72,1.35-4.16,3.29c-0.13,0.59-0.13,1.19,0,1.77c0.44,1.94,2.17,3.32,4.17,3.3 c2.35,0,4.26-1.87,4.26-4.19S74.04,6.32,71.67,6.32z M71.65,13.01c-1.33,0-2.42-1.12-2.42-2.51s1.08-2.52,2.42-2.52 c1.33,0,2.42,1.12,2.42,2.51S72.99,13,71.65,13.01L71.65,13.01z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M62.08,7.98c-1.32,0-2.39,1.11-2.41,2.48v0.06C59.68,11.9,60.75,13,62.08,13s2.42-1.12,2.42-2.51 S63.41,7.98,62.08,7.98z M62.08,11.76c-0.63,0-1.14-0.56-1.17-1.25v-0.04c0.01-0.69,0.54-1.25,1.17-1.25 c0.63,0,1.17,0.57,1.17,1.27C63.24,11.2,62.73,11.76,62.08,11.76z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M71.65,7.98c-1.33,0-2.42,1.12-2.42,2.51S70.32,13,71.65,13s2.42-1.12,2.42-2.51S72.99,7.98,71.65,7.98z M71.65,11.76c-0.64,0-1.17-0.57-1.17-1.27c0-0.7,0.53-1.26,1.17-1.26s1.17,0.57,1.17,1.27C72.82,11.21,72.29,11.76,71.65,11.76z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M45.74,6.53h-1.4c-0.13,0-0.23,0.11-0.23,0.23v0.73c-0.71-0.75-1.7-1.18-2.73-1.18 c-2.17,0-3.94,1.87-3.94,4.19s1.77,4.19,3.94,4.19c1.04,0,2.03-0.43,2.73-1.19v0.73c0,0.13,0.1,0.23,0.23,0.23h1.4 c0.13,0,0.23-0.11,0.23-0.23V6.74c0-0.12-0.09-0.22-0.22-0.22C45.75,6.53,45.75,6.53,45.74,6.53z M44.12,10.53 C44.11,11.9,43.03,13,41.71,13s-2.42-1.12-2.42-2.51s1.08-2.52,2.4-2.52c1.33,0,2.39,1.11,2.41,2.48L44.12,10.53z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M41.71,7.98c-1.33,0-2.42,1.12-2.42,2.51S40.37,13,41.71,13s2.39-1.11,2.41-2.48v-0.06 C44.1,9.09,43.03,7.98,41.71,7.98z M40.55,10.49c0-0.7,0.52-1.27,1.17-1.27c0.64,0,1.14,0.56,1.17,1.25v0.04 c-0.01,0.68-0.53,1.24-1.17,1.24C41.08,11.75,40.55,11.19,40.55,10.49z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M52.41,6.32c-1.03,0-2.03,0.42-2.73,1.18V6.75c0-0.13-0.1-0.23-0.23-0.23h-1.4c-0.13,0-0.23,0.11-0.23,0.23 v10.72c0,0.13,0.1,0.23,0.23,0.23h1.4c0.13,0,0.23-0.1,0.23-0.23V13.5c0.71,0.75,1.7,1.18,2.74,1.18c2.17,0,3.94-1.87,3.94-4.19 S54.58,6.32,52.41,6.32z M52.08,13.01c-1.32,0-2.39-1.11-2.42-2.48v-0.07c0.02-1.38,1.09-2.49,2.4-2.49c1.32,0,2.41,1.12,2.41,2.51 S53.4,13,52.08,13.01L52.08,13.01z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M52.08,7.98c-1.32,0-2.39,1.11-2.42,2.48v0.06c0.03,1.38,1.1,2.48,2.42,2.48s2.41-1.12,2.41-2.51 S53.4,7.98,52.08,7.98z M52.08,11.76c-0.63,0-1.14-0.56-1.17-1.25v-0.04c0.01-0.69,0.54-1.25,1.17-1.25c0.63,0,1.17,0.58,1.17,1.27 S52.72,11.76,52.08,11.76z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M36.08,14.24c0,0.13-0.1,0.23-0.23,0.23h-1.41c-0.13,0-0.23-0.11-0.23-0.23V9.68c0-0.98-0.74-1.71-1.62-1.71 c-0.8,0-1.46,0.7-1.59,1.62l0.01,4.66c0,0.13-0.11,0.23-0.23,0.23h-1.41c-0.13,0-0.23-0.11-0.23-0.23V9.68 c0-0.98-0.74-1.71-1.62-1.71c-0.85,0-1.54,0.79-1.6,1.8v4.48c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23V6.74 c0.01-0.13,0.1-0.22,0.23-0.22h1.4c0.13,0,0.22,0.11,0.23,0.22V7.4c0.5-0.68,1.3-1.09,2.16-1.1h0.03c1.09,0,2.09,0.6,2.6,1.55 c0.45-0.95,1.4-1.55,2.44-1.56c1.62,0,2.93,1.25,2.9,2.78L36.08,14.24z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M84.34,13.59l-0.07-0.13l-1.96-2.99l1.94-2.95c0.44-0.67,0.26-1.56-0.41-2.02c-0.02,0-0.03,0-0.04-0.01 c-0.23-0.15-0.5-0.22-0.78-0.22h-1.61c-0.56,0-1.08,0.29-1.37,0.78L79.72,6.6l-0.34-0.56C79.09,5.56,78.57,5.27,78,5.27h-1.6 c-0.6,0-1.13,0.37-1.35,0.92c-2.19-1.66-5.28-1.47-7.26,0.45c-0.35,0.34-0.65,0.72-0.89,1.14c-0.9-1.62-2.58-2.72-4.5-2.72 c-0.5,0-1.01,0.07-1.48,0.23V3.51c0-0.82-0.66-1.48-1.47-1.48h-1.4c-0.81,0-1.47,0.66-1.47,1.47v3.75 c-0.95-1.36-2.5-2.18-4.17-2.19c-0.74,0-1.46,0.16-2.12,0.47c-0.24-0.17-0.54-0.26-0.84-0.26h-1.4c-0.45,0-0.87,0.21-1.15,0.56 c-0.02-0.03-0.04-0.05-0.07-0.08c-0.28-0.3-0.68-0.47-1.09-0.47h-1.39c-0.3,0-0.6,0.09-0.84,0.26c-0.67-0.3-1.39-0.46-2.12-0.46 c-1.83,0-3.43,1-4.37,2.5c-0.2-0.46-0.48-0.89-0.83-1.25c-0.8-0.81-1.89-1.25-3.02-1.25h-0.01c-0.89,0.01-1.75,0.33-2.46,0.88 c-0.74-0.57-1.64-0.88-2.57-0.88H28.1c-0.29,0-0.58,0.03-0.86,0.11c-0.28,0.06-0.56,0.16-0.82,0.28c-0.21-0.12-0.45-0.18-0.7-0.18 h-1.4c-0.82,0-1.47,0.66-1.47,1.47v7.5c0,0.82,0.66,1.47,1.47,1.47h1.4c0.82,0,1.48-0.66,1.48-1.48l0,0V9.79 c0.03-0.36,0.23-0.59,0.36-0.59c0.18,0,0.38,0.18,0.38,0.47v4.57c0,0.82,0.66,1.47,1.47,1.47h1.41c0.82,0,1.47-0.66,1.47-1.47 l-0.01-4.57c0.06-0.32,0.25-0.47,0.35-0.47c0.18,0,0.38,0.18,0.38,0.47v4.57c0,0.82,0.66,1.47,1.47,1.47h1.41 c0.82,0,1.47-0.66,1.47-1.47v-0.38c0.96,1.29,2.46,2.06,4.06,2.06c0.74,0,1.46-0.16,2.12-0.47c0.24,0.17,0.54,0.26,0.84,0.26h1.39 c0.3,0,0.6-0.09,0.84-0.26v2.01c0,0.82,0.66,1.47,1.47,1.47h1.4c0.82,0,1.47-0.66,1.47-1.47v-1.77c0.48,0.15,0.99,0.23,1.49,0.22 c1.7,0,3.22-0.87,4.17-2.2v0.52c0,0.82,0.66,1.47,1.47,1.47h1.4c0.3,0,0.6-0.09,0.84-0.26c0.66,0.31,1.39,0.47,2.12,0.47 c1.92,0,3.6-1.1,4.49-2.73c1.54,2.65,4.95,3.53,7.58,1.98c0.18-0.11,0.36-0.22,0.53-0.36c0.22,0.55,0.76,0.91,1.35,0.9H78 c0.56,0,1.08-0.29,1.37-0.78l0.37-0.61l0.37,0.61c0.29,0.48,0.81,0.78,1.38,0.78h1.6c0.81,0,1.46-0.66,1.45-1.46 C84.49,14.02,84.44,13.8,84.34,13.59L84.34,13.59z M35.86,14.47h-1.41c-0.13,0-0.23-0.11-0.23-0.23V9.68 c0-0.98-0.74-1.71-1.62-1.71c-0.8,0-1.46,0.7-1.59,1.62l0.01,4.66c0,0.13-0.1,0.23-0.23,0.23h-1.41c-0.13,0-0.23-0.11-0.23-0.23 V9.68c0-0.98-0.74-1.71-1.62-1.71c-0.85,0-1.54,0.79-1.6,1.8v4.48c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23 V6.74c0.01-0.13,0.11-0.22,0.23-0.22h1.4c0.13,0,0.22,0.11,0.23,0.22V7.4c0.5-0.68,1.3-1.09,2.16-1.1h0.03 c1.09,0,2.09,0.6,2.6,1.55c0.45-0.95,1.4-1.55,2.44-1.56c1.62,0,2.93,1.25,2.9,2.78l0.01,5.16C36.09,14.36,35.98,14.46,35.86,14.47 L35.86,14.47z M45.97,14.24c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23V13.5c-0.7,0.76-1.69,1.18-2.72,1.18 c-2.17,0-3.94-1.87-3.94-4.19s1.77-4.19,3.94-4.19c1.03,0,2.02,0.43,2.73,1.18V6.74c0-0.13,0.1-0.23,0.23-0.23h1.4 c0.12-0.01,0.22,0.08,0.23,0.21c0,0.01,0,0.01,0,0.02v7.51h-0.01V14.24z M52.41,14.67c-1.03,0-2.02-0.43-2.73-1.18v3.97 c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.1-0.23-0.23V6.75c0-0.13,0.1-0.22,0.23-0.22h1.4c0.13,0,0.23,0.11,0.23,0.23v0.73 c0.71-0.76,1.7-1.18,2.73-1.18c2.17,0,3.94,1.86,3.94,4.18S54.58,14.67,52.41,14.67z M66.24,11.39c-0.39,1.87-1.96,3.29-3.84,3.29 c-1.03,0-2.02-0.43-2.73-1.18v0.73c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23V3.51c0-0.13,0.1-0.23,0.23-0.23 h1.4c0.13,0,0.23,0.11,0.23,0.23v3.97c0.71-0.75,1.7-1.18,2.73-1.17c1.88,0,3.45,1.4,3.84,3.28C66.37,10.19,66.37,10.8,66.24,11.39 L66.24,11.39L66.24,11.39z M71.67,14.68c-2,0.01-3.73-1.35-4.17-3.3c-0.13-0.59-0.13-1.19,0-1.77c0.44-1.94,2.17-3.31,4.17-3.3 c2.36,0,4.26,1.87,4.26,4.19S74.03,14.68,71.67,14.68L71.67,14.68z M83.04,14.47h-1.61c-0.13,0-0.24-0.06-0.3-0.17l-1.44-2.39 l-1.44,2.39c-0.06,0.11-0.18,0.17-0.3,0.17h-1.61c-0.04,0-0.08-0.01-0.12-0.03c-0.09-0.06-0.13-0.19-0.06-0.28l0,0l2.43-3.68 L76.2,6.84c-0.02-0.03-0.03-0.07-0.03-0.12c0-0.12,0.09-0.21,0.21-0.21h1.61c0.13,0,0.24,0.06,0.3,0.17l1.41,2.36l1.41-2.36 c0.06-0.11,0.18-0.17,0.3-0.17h1.61c0.04,0,0.08,0.01,0.12,0.03c0.09,0.06,0.13,0.19,0.06,0.28l0,0l-2.38,3.64l2.43,3.67 c0.02,0.03,0.03,0.07,0.03,0.12C83.25,14.38,83.16,14.47,83.04,14.47L83.04,14.47L83.04,14.47z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M10.5,1.24c-5.11,0-9.25,4.15-9.25,9.25s4.15,9.25,9.25,9.25s9.25-4.15,9.25-9.25 C19.75,5.38,15.61,1.24,10.5,1.24z M14.89,12.77c-1.93,1.93-4.78,2.31-6.7,2.31c-0.7,0-1.41-0.05-2.1-0.16c0,0-1.02-5.64,2.14-8.81 c0.83-0.83,1.95-1.28,3.13-1.28c1.27,0,2.49,0.51,3.39,1.42C16.59,8.09,16.64,11,14.89,12.77z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M10.5-0.01C4.7-0.01,0,4.7,0,10.49s4.7,10.5,10.5,10.5S21,16.29,21,10.49C20.99,4.7,16.3-0.01,10.5-0.01z M10.5,19.74c-5.11,0-9.25-4.15-9.25-9.25s4.14-9.26,9.25-9.26s9.25,4.15,9.25,9.25C19.75,15.61,15.61,19.74,10.5,19.74z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M14.74,6.25C12.9,4.41,9.98,4.35,8.23,6.1c-3.16,3.17-2.14,8.81-2.14,8.81s5.64,1.02,8.81-2.14 C16.64,11,16.59,8.09,14.74,6.25z M12.47,10.34l-0.91,1.87l-0.9-1.87L8.8,9.43l1.86-0.9l0.9-1.87l0.91,1.87l1.86,0.9L12.47,10.34z"/%3E %3Cpolygon class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" points="14.33,9.43 12.47,10.34 11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 "/%3E%3C/g%3E%3C/svg%3E\');' diff --git a/src/plots/plots.js b/src/plots/plots.js index d86c5c7e06b..47684744520 100644 --- a/src/plots/plots.js +++ b/src/plots/plots.js @@ -114,93 +114,6 @@ plots.previousPromises = function(gd) { } }; -/** - * Adds the 'Edit chart' link. - * Note that now _doPlot calls this so it can regenerate whenever it replots - * - * Add source links to your graph inside the 'showSources' config argument. - */ -plots.addLinks = function(gd) { - // Do not do anything if showLink and showSources are not set to true in config - if(!gd._context.showLink && !gd._context.showSources) return; - - var fullLayout = gd._fullLayout; - - var linkContainer = Lib.ensureSingle(fullLayout._paper, 'text', 'js-plot-link-container', function(s) { - s.style({ - 'font-family': '"Open Sans", Arial, sans-serif', - 'font-size': '12px', - fill: Color.defaultLine, - 'pointer-events': 'all' - }) - .each(function() { - var links = d3.select(this); - links.append('tspan').classed('js-link-to-tool', true); - links.append('tspan').classed('js-link-spacer', true); - links.append('tspan').classed('js-sourcelinks', true); - }); - }); - - // The text node inside svg - var text = linkContainer.node(); - var attrs = {y: fullLayout._paper.attr('height') - 9}; - - // If text's width is bigger than the layout - // Check that text is a child node or document.body - // because otherwise Edge might throw an exception - // when calling getComputedTextLength(). - // Apparently offsetParent is null for invisibles. - if(document.body.contains(text) && text.getComputedTextLength() >= (fullLayout.width - 20)) { - // Align the text at the left - attrs['text-anchor'] = 'start'; - attrs.x = 5; - } else { - // Align the text at the right - attrs['text-anchor'] = 'end'; - attrs.x = fullLayout._paper.attr('width') - 7; - } - - linkContainer.attr(attrs); - - var toolspan = linkContainer.select('.js-link-to-tool'); - var spacespan = linkContainer.select('.js-link-spacer'); - var sourcespan = linkContainer.select('.js-sourcelinks'); - - if(gd._context.showSources) gd._context.showSources(gd); - - // 'view in plotly' link for embedded plots - if(gd._context.showLink) positionPlayWithData(gd, toolspan); - - // separator if we have both sources and tool link - spacespan.text((toolspan.text() && sourcespan.text()) ? ' - ' : ''); -}; - -// note that now this function is only adding the brand in -// iframes and 3rd-party apps -function positionPlayWithData(gd, container) { - container.text(''); - var link = container.append('a') - .attr({ - 'xlink:xlink:href': '#', - class: 'link--impt link--embedview', - 'font-weight': 'bold' - }) - .text(gd._context.linkText + ' ' + String.fromCharCode(187)); - - if(gd._context.sendData) { - link.on('click', function() { - plots.sendDataToCloud(gd); - }); - } else { - var path = window.location.pathname.split('/'); - var query = window.location.search; - link.attr({ - 'xlink:xlink:show': 'new', - 'xlink:xlink:href': '/' + path[2].split('.')[0] + '/' + path[1] + query - }); - } -} - plots.sendDataToCloud = function(gd, serverURL) { gd.emit('plotly_beforeexport'); @@ -208,7 +121,7 @@ plots.sendDataToCloud = function(gd, serverURL) { // Build the request body: the chart JSON plus the plotly.js version used to // generate it, so Cloud can host the chart with a compatible plotly.js version. - var chart = plots.graphJson(gd, false, 'keepdata', 'object'); + var chart = plots.graphJson(gd, false, 'object'); chart.version = version; // Open the Cloud login page in a new tab. We keep a reference so we can post @@ -276,9 +189,6 @@ var extraFormatKeys = [ * gd._fullLayout._basePlotModules * is a list of all the plot modules required to draw the plot. * - * gd._fullLayout._transformModules - * is a list of all the transform modules invoked. - * */ plots.supplyDefaults = function(gd, opts) { var skipUpdateCalc = opts && opts.skipUpdateCalc; @@ -505,7 +415,7 @@ plots.supplyDefaults = function(gd, opts) { var uid; for(uid in tracePreGUI) uids[uid] = 'old'; for(i = 0; i < newFullData.length; i++) { - uid = newFullData[i]._fullInput.uid; + uid = newFullData[i].uid; if(!uids[uid]) tracePreGUI[uid] = {}; uids[uid] = 'new'; } @@ -530,17 +440,6 @@ plots.supplyDefaultsUpdateCalc = function(oldCalcdata, newFullData) { var newTrace = newFullData[i]; var cd0 = (oldCalcdata[i] || [])[0]; if(cd0 && cd0.trace) { - var oldTrace = cd0.trace; - if(oldTrace._hasCalcTransform) { - var arrayAttrs = oldTrace._arrayAttrs; - var j, astr, oldArrayVal; - - for(j = 0; j < arrayAttrs.length; j++) { - astr = arrayAttrs[j]; - oldArrayVal = Lib.nestedProperty(oldTrace, astr).get().slice(); - Lib.nestedProperty(newTrace, astr).set(oldArrayVal); - } - } cd0.trace = newTrace; } } @@ -554,14 +453,8 @@ plots.supplyDefaultsUpdateCalc = function(oldCalcdata, newFullData) { */ function getTraceUids(oldFullData, newData) { var len = newData.length; - var oldFullInput = []; - var i, prevFullInput; - for(i = 0; i < oldFullData.length; i++) { - var thisFullInput = oldFullData[i]._fullInput; - if(thisFullInput !== prevFullInput) oldFullInput.push(thisFullInput); - prevFullInput = thisFullInput; - } - var oldLen = oldFullInput.length; + var i; + var oldLen = oldFullData.length; var out = new Array(len); var seenUids = {}; @@ -582,7 +475,7 @@ function getTraceUids(oldFullData, newData) { if(typeof newUid === 'number') newUid = String(newUid); if(tryUid(newUid, i)) continue; - if(i < oldLen && tryUid(oldFullInput[i].uid, i)) continue; + if(i < oldLen && tryUid(oldFullData[i].uid, i)) continue; setUid(Lib.randstr(seenUids), i); } @@ -1001,51 +894,6 @@ function findMainSubplot(ax, fullLayout) { return mainSubplotID || nextBestMainSubplotID; } -// This function clears any trace attributes with valType: color and -// no set dflt filed in the plot schema. This is needed because groupby (which -// is the only transform for which this currently applies) supplies parent -// trace defaults, then expanded trace defaults. The result is that `null` -// colors are default-supplied and inherited as a color instead of a null. -// The result is that expanded trace default colors have no effect, with -// the final result that groups are indistinguishable. This function clears -// those colors so that individual groupby groups get unique colors. -plots.clearExpandedTraceDefaultColors = function(trace) { - var colorAttrs, path, i; - - // This uses weird closure state in order to satisfy the linter rule - // that we can't create functions in a loop. - function locateColorAttrs(attr, attrName, attrs, level) { - path[level] = attrName; - path.length = level + 1; - if(attr.valType === 'color' && attr.dflt === undefined) { - colorAttrs.push(path.join('.')); - } - } - - path = []; - - // Get the cached colorAttrs: - colorAttrs = trace._module._colorAttrs; - - // Or else compute and cache the colorAttrs on the module: - if(!colorAttrs) { - trace._module._colorAttrs = colorAttrs = []; - PlotSchema.crawl( - trace._module.attributes, - locateColorAttrs - ); - } - - for(i = 0; i < colorAttrs.length; i++) { - var origprop = Lib.nestedProperty(trace, '_input.' + colorAttrs[i]); - - if(!origprop.get()) { - Lib.nestedProperty(trace, colorAttrs[i]).set(null); - } - } -}; - - plots.supplyDataDefaults = function(dataIn, dataOut, layout, fullLayout) { var modules = fullLayout._modules; var visibleModules = fullLayout._visibleModules; @@ -1055,8 +903,6 @@ plots.supplyDataDefaults = function(dataIn, dataOut, layout, fullLayout) { var i, fullTrace, trace; - fullLayout._transformModules = []; - function pushModule(fullTrace) { dataOut.push(fullTrace); @@ -1094,7 +940,6 @@ plots.supplyDataDefaults = function(dataIn, dataOut, layout, fullLayout) { fullTrace.index = i; fullTrace._input = trace; - fullTrace._fullInput = fullTrace; pushModule(fullTrace); @@ -1411,7 +1256,6 @@ plots.supplyLayoutGlobalDefaults = function(layoutIn, layoutOut, formatObj) { coerce('paper_bgcolor'); coerce('separators', formatObj.decimal + formatObj.thousands); - coerce('hidesources'); coerce('colorway'); @@ -1582,16 +1426,6 @@ plots.supplyLayoutModuleDefaults = function(layoutIn, layoutOut, fullData, trans } } - // transform module layout defaults - var transformModules = layoutOut._transformModules; - for(i = 0; i < transformModules.length; i++) { - _module = transformModules[i]; - - if(_module.supplyLayoutDefaults) { - _module.supplyLayoutDefaults(layoutIn, layoutOut, fullData, transitionData); - } - } - for(component in componentsRegistry) { _module = componentsRegistry[component]; @@ -2057,7 +1891,7 @@ plots.didMarginChange = function(margin0, margin1) { /** * JSONify the graph data and layout * - * This function needs to recurse because some src can be inside + * This function needs to recurse because some objects can be inside * sub-objects. * * It also strips out functions and private (starts with _) elements. @@ -2065,19 +1899,13 @@ plots.didMarginChange = function(margin0, margin1) { * get saved. * * @param gd The graphDiv - * @param {Boolean} dataonly If true, don't return layout. - * @param {'keepref'|'keepdata'|'keepall'} [mode='keepref'] Filter what's kept - * keepref: remove data for which there's a src present - * eg if there's xsrc present (and xsrc is well-formed, - * ie has : and some chars before it), strip out x - * keepdata: remove all src tags, don't remove the data itself - * keepall: keep data and src - * @param {String} output If you specify 'object', the result will not be stringified - * @param {Boolean} useDefaults If truthy, use _fullLayout and _fullData - * @param {Boolean} includeConfig If truthy, include _context + * @param {Boolean} [dataonly=false] If true, don't return layout. + * @param {String} [output='json'] If set to 'object', return result as a JS Object, otherwise return as a JSON string + * @param {Boolean} [useDefaults=false] If truthy, use _fullLayout and _fullData (after supplyDefaults step) + * @param {Boolean} [includeConfig=false] If truthy, include _context * @returns {Object|String} */ -plots.graphJson = function(gd, dataonly, mode, output, useDefaults, includeConfig) { +plots.graphJson = function(gd, dataonly = false, output = 'json', useDefaults = false, includeConfig = false) { // if the defaults aren't supplied yet, we need to do that... if((useDefaults && dataonly && !gd._fullData) || (useDefaults && !dataonly && !gd._fullLayout)) { @@ -2094,7 +1922,6 @@ plots.graphJson = function(gd, dataonly, mode, output, useDefaults, includeConfi } if(Lib.isPlainObject(d)) { var o = {}; - var src; Object.keys(d).sort().forEach(function(v) { // remove private elements and functions // _ is for private, [ is a mistake ie [object Object] @@ -2106,31 +1933,6 @@ plots.graphJson = function(gd, dataonly, mode, output, useDefaults, includeConfi return; } - // look for src/data matches and remove the appropriate one - if(mode === 'keepdata') { - // keepdata: remove all ...src tags - if(v.slice(-3) === 'src') { - return; - } - } else if(mode === 'keepstream') { - // keep sourced data if it's being streamed. - // similar to keepref, but if the 'stream' object exists - // in a trace, we will keep the data array. - src = d[v + 'src']; - if(typeof src === 'string' && src.indexOf(':') > 0) { - if(!Lib.isPlainObject(d.stream)) { - return; - } - } - } else if(mode !== 'keepall') { - // keepref: remove sourced data but only - // if the source tag is well-formed - src = d[v + 'src']; - if(typeof src === 'string' && src.indexOf(':') > 0) { - return; - } - } - // OK, we're including this... recurse into it o[v] = stripObj(d[v], keepFunction); }); @@ -2429,14 +2231,14 @@ plots.extendObjectWithContainers = function(dest, src, containerPaths) { return dest; }; -plots.dataArrayContainers = ['transforms', 'dimensions']; +plots.dataArrayContainers = ['dimensions']; plots.layoutArrayContainers = Registry.layoutArrayContainers; /* * Extend a trace definition. This method: * * 1. directly transfers any array references - * 2. manually recurses into container arrays like transforms + * 2. manually recurses into container arrays like dimensions * * The result is the original object reference with the new contents merged in. */ @@ -2872,7 +2674,7 @@ plots.doCalcdata = function(gd, traces) { var fullData = gd._fullData; var fullLayout = gd._fullLayout; - var trace, _module, i, j; + var trace, _module, i; // XXX: Is this correct? Needs a closer look so that *some* traces can be recomputed without // *all* needing doCalcdata: @@ -2936,39 +2738,6 @@ plots.doCalcdata = function(gd, traces) { } } - var hasCalcTransform = false; - - function transformCalci(i) { - trace = fullData[i]; - _module = trace._module; - - if(trace.visible === true && trace.transforms) { - // we need one round of trace module calc before - // the calc transform to 'fill in' the categories list - // used for example in the data-to-coordinate method - if(_module && _module.calc) { - var cdi = _module.calc(gd, trace); - - // must clear scene 'batches', so that 2nd - // _module.calc call starts from scratch - if(cdi[0] && cdi[0].t && cdi[0].t._scene) { - delete cdi[0].t._scene.dirty; - } - } - - for(j = 0; j < trace.transforms.length; j++) { - var transform = trace.transforms[j]; - - _module = transformsRegistry[transform.type]; - if(_module && _module.calcTransform) { - trace._hasCalcTransform = true; - hasCalcTransform = true; - _module.calcTransform(gd, trace, transform); - } - } - } - } - function calci(i, isContainer) { trace = fullData[i]; _module = trace._module; @@ -2978,19 +2747,6 @@ plots.doCalcdata = function(gd, traces) { var cd = []; if(trace.visible === true && trace._length !== 0) { - // clear existing ref in case it got relinked - delete trace._indexToPoints; - // keep ref of index-to-points map object of the *last* enabled transform, - // this index-to-points map object is required to determine the calcdata indices - // that correspond to input indices (e.g. from 'selectedpoints') - var transforms = trace.transforms || []; - for(j = transforms.length - 1; j >= 0; j--) { - if(transforms[j].enabled) { - trace._indexToPoints = transforms[j]._indexToPoints; - break; - } - } - if(_module && _module.calc) { cd = _module.calc(gd, trace); } @@ -3015,15 +2771,7 @@ plots.doCalcdata = function(gd, traces) { setupAxisCategories(axList, fullData, fullLayout); - // 'transform' loop - must calc container traces first - // so that if their dependent traces can get transform properly - for(i = 0; i < fullData.length; i++) calci(i, true); - for(i = 0; i < fullData.length; i++) transformCalci(i); - - // clear stuff that should recomputed in 'regular' loop - if(hasCalcTransform) setupAxisCategories(axList, fullData, fullLayout); - - // 'regular' loop - make sure container traces (eg carpet) calc before + // make sure container traces (eg carpet) calc before // contained traces (eg contourcarpet) for(i = 0; i < fullData.length; i++) calci(i, true); for(i = 0; i < fullData.length; i++) calci(i, false); diff --git a/src/plots/polar/polar.js b/src/plots/polar/polar.js index 7871cf7e81b..7e113aa2021 100644 --- a/src/plots/polar/polar.js +++ b/src/plots/polar/polar.js @@ -1,7 +1,6 @@ 'use strict'; var d3 = require('@plotly/d3'); -var tinycolor = require('tinycolor2'); var Registry = require('../../registry'); var Lib = require('../../lib'); @@ -935,7 +934,7 @@ proto.updateHoverAndMainDrag = function(fullLayout) { dimmed = false; var polarLayoutNow = gd._fullLayout[_this.id]; - lum = tinycolor(polarLayoutNow.bgcolor).getLuminance(); + lum = Color.color(polarLayoutNow.bgcolor).luminosity(); zb = dragBox.makeZoombox(zoomlayer, lum, cx, cy, path0); zb.attr('fill-rule', 'evenodd'); diff --git a/src/plots/ternary/ternary.js b/src/plots/ternary/ternary.js index 23bd65eddea..03ad0e8be49 100644 --- a/src/plots/ternary/ternary.js +++ b/src/plots/ternary/ternary.js @@ -1,7 +1,6 @@ 'use strict'; var d3 = require('@plotly/d3'); -var tinycolor = require('tinycolor2'); var Registry = require('../../registry'); var Lib = require('../../lib'); @@ -593,7 +592,7 @@ proto.initInteractions = function() { }; mins = mins0; span0 = _this.aaxis.range[1] - mins0.a; - lum = tinycolor(_this.graphDiv._fullLayout[_this.id].bgcolor).getLuminance(); + lum = Color.color(_this.graphDiv._fullLayout[_this.id].bgcolor).luminosity(); path0 = 'M0,' + _this.h + 'L' + (_this.w / 2) + ', 0L' + _this.w + ',' + _this.h + 'Z'; dimmed = false; diff --git a/src/registry.js b/src/registry.js index 499abf2457b..fbd8e8aeed6 100644 --- a/src/registry.js +++ b/src/registry.js @@ -3,7 +3,6 @@ var Loggers = require('./lib/loggers'); var noop = require('./lib/noop'); var pushUnique = require('./lib/push_unique'); -var isPlainObject = require('./lib/is_plain_object'); var addStyleRule = require('./lib/dom').addStyleRule; var ExtendModule = require('./lib/extend'); @@ -48,13 +47,6 @@ exports.collectableSubplotTypes = null; * - format {object} : a `d3.locale` format specifier for this locale * any omitted keys we'll fall back on en-US. * - * A valid `moduleType: 'transform'` module has fields: - * - name {string} : transform name - * - transform {function} : default-level transform function - * - calcTransform {function} : calc-level transform function - * - attributes {object} : transform attributes declarations - * - supplyDefaults {function} : attributes default-supply function - * * A valid `moduleType: 'component'` module has fields: * - name {string} : the component name, used it with Register.getComponentMethod() * to employ component method. @@ -84,9 +76,6 @@ exports.register = function register(_modules) { case 'trace': registerTraceModule(newModule); break; - case 'transform': - registerTransformModule(newModule); - break; case 'component': registerComponentModule(newModule); break; @@ -294,33 +283,6 @@ function registerComponentModule(_module) { } } -function registerTransformModule(_module) { - if(typeof _module.name !== 'string') { - throw new Error('Transform module *name* must be a string.'); - } - - var prefix = 'Transform module ' + _module.name; - var hasTransform = typeof _module.transform === 'function'; - var hasCalcTransform = typeof _module.calcTransform === 'function'; - - if(!hasTransform && !hasCalcTransform) { - throw new Error(prefix + ' is missing a *transform* or *calcTransform* method.'); - } - if(hasTransform && hasCalcTransform) { - Loggers.log([ - prefix + ' has both a *transform* and *calcTransform* methods.', - 'Please note that all *transform* methods are executed', - 'before all *calcTransform* methods.' - ].join(' ')); - } - if(!isPlainObject(_module.attributes)) { - Loggers.log(prefix + ' registered without an *attributes* object.'); - } - if(typeof _module.supplyDefaults !== 'function') { - Loggers.log(prefix + ' registered without a *supplyDefaults* method.'); - } -} - function registerLocale(_module) { var locale = _module.name; var baseLocale = locale.split('-')[0]; diff --git a/src/snapshot/cloneplot.js b/src/snapshot/cloneplot.js index b210c6d673e..1cc8a0e611e 100644 --- a/src/snapshot/cloneplot.js +++ b/src/snapshot/cloneplot.js @@ -26,7 +26,6 @@ function cloneLayoutOverride(tileClass) { case 'thumbnail': override = { title: {text: ''}, - hidesources: true, showlegend: false, borderwidth: 0, bordercolor: '', @@ -141,7 +140,6 @@ module.exports = function clonePlot(graphObj, options) { 2 : options.plotGlPixelRatio, displaylogo: options.displaylogo || false, - showLink: options.showLink || false, showTips: options.showTips || false, mapboxAccessToken: context.mapboxAccessToken } diff --git a/src/snapshot/download.js b/src/snapshot/download.js index 95c97fe7441..93b4fbd29ec 100644 --- a/src/snapshot/download.js +++ b/src/snapshot/download.js @@ -1,12 +1,20 @@ 'use strict'; var Lib = require('../lib'); +var svgTextUtils = require('../lib/svg_text_utils'); var toImage = require('../plot_api/to_image'); var fileSaver = require('./filesaver'); var helpers = require('./helpers'); +// Maximum length of filename (without extension) when deriving filename from plot title. +// 40 is somewhat arbitrary, just trying to strike a balance between being informative +// while still generating a reasonable-length filename. +// Technically, this is actually the number of code points rather than characters, which only differs +// from character count in the case of certain emojis or special characters containing multiple code points +const MAX_FILENAME_LENGTH_CHARS = 40; + /** * Plotly.downloadImage * @@ -29,13 +37,29 @@ function downloadImage(gd, opts) { return new Promise(function(resolve, reject) { if(_gd && _gd._snapshotInProgress) { - reject(new Error('Snapshotting already in progress.')); + reject(new Error('Image capture already in progress.')); } if(_gd) _gd._snapshotInProgress = true; var promise = toImage(gd, opts); - var filename = opts.filename || gd.fn || 'newplot'; + var potentialFilename = opts.filename || gd.fn; + if (!potentialFilename) { + const plotTitle = helpers.getPlotTitle(gd); + // Trying to slugify a LaTeX string can result in weird ugly filenames, + // so ignore the title entirely if it contains LaTeX markup + if (plotTitle && !svgTextUtils.matchTex(plotTitle)) { + potentialFilename = Lib.slugify(plotTitle, MAX_FILENAME_LENGTH_CHARS); + } else { + // If the title is empty or contains LaTeX, fall back to subtitle + const plotSubtitle = helpers.getPlotSubtitle(gd); + if (plotSubtitle && !svgTextUtils.matchTex(plotSubtitle)) { + potentialFilename = Lib.slugify(plotSubtitle, MAX_FILENAME_LENGTH_CHARS); + } + } + } + + var filename = potentialFilename || 'plot-image'; filename += '.' + opts.format.replace('-', '.'); promise.then(function(result) { diff --git a/src/snapshot/helpers.js b/src/snapshot/helpers.js index 3f50eb1a2d2..6493255ef0d 100644 --- a/src/snapshot/helpers.js +++ b/src/snapshot/helpers.js @@ -51,6 +51,35 @@ exports.octetStream = function(s) { document.location.href = 'data:application/octet-stream' + s; }; +/** + * Get the resolved plot title to derive a filename from, or undefined if there + * is none. We try to read _fullLayout, which reflects the title after applying + * layout.template, but since title.text falls back to the editable-mode placeholder + * when unset, a value equal to that placeholder is treated as no title. + * For an un-rendered figure object (no _fullLayout) we fall back to the input layout + * (gd.layout). + */ +exports.getPlotTitle = function(gd) { + var fullLayout = gd._fullLayout; + if(fullLayout) { + var title = fullLayout.title?.text; + return title === fullLayout._dfltTitle?.plot ? undefined : title; + } + return gd.layout?.title?.text; +}; + +/** + * Get the resolved plot subtitle, or undefined if there is none. + */ +exports.getPlotSubtitle = function(gd) { + var fullLayout = gd._fullLayout; + if(fullLayout) { + var subtitle = fullLayout.title?.subtitle?.text; + return subtitle === fullLayout._dfltTitle?.subtitle ? undefined : subtitle; + } + return gd.layout?.title?.subtitle?.text; +}; + // Taken from https://bl.ocks.org/nolanlawson/0eac306e4dac2114c752 function fixBinary(b) { var len = b.length; diff --git a/src/traces/bar/helpers.js b/src/traces/bar/helpers.js index d1f30a23246..87f0915ff52 100644 --- a/src/traces/bar/helpers.js +++ b/src/traces/bar/helpers.js @@ -1,7 +1,7 @@ 'use strict'; +const Color = require('../../components/color'); var isNumeric = require('fast-isnumeric'); -var tinycolor = require('tinycolor2'); var isArrayOrTypedArray = require('../../lib').isArrayOrTypedArray; exports.coerceString = function(attributeDefinition, value, defaultValue) { @@ -34,7 +34,7 @@ exports.coerceNumber = function(attributeDefinition, value, defaultValue) { }; exports.coerceColor = function(attributeDefinition, value, defaultValue) { - if(tinycolor(value).isValid()) return value; + if(Color.isValid(value)) return value; return (defaultValue !== undefined) ? defaultValue : diff --git a/src/traces/candlestick/index.js b/src/traces/candlestick/index.js index fd621fbd66a..6a729f596b5 100644 --- a/src/traces/candlestick/index.js +++ b/src/traces/candlestick/index.js @@ -13,7 +13,7 @@ module.exports = { 'The boxes represent the spread between the `open` and `close` values and', 'the lines represent the spread between the `low` and `high` values', - 'Sample points where the close value is higher (lower) then the open', + 'Sample points where the close value is higher (lower) than the open', 'value are called increasing (decreasing).', 'By default, increasing candles are drawn in green whereas', diff --git a/src/traces/carpet/axis_defaults.js b/src/traces/carpet/axis_defaults.js index 1b45c87f6e5..8147e87d31c 100644 --- a/src/traces/carpet/axis_defaults.js +++ b/src/traces/carpet/axis_defaults.js @@ -135,7 +135,7 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, options) dataAttr: letter }); - var gridColor = coerce2('gridcolor', addOpacity(dfltColor, 0.3)); + var gridColor = coerce('gridcolor', addOpacity(dfltColor, 0.3)); var gridWidth = coerce2('gridwidth'); var gridDash = coerce2('griddash'); var showGrid = coerce('showgrid'); diff --git a/src/traces/carpet/calc_labels.js b/src/traces/carpet/calc_labels.js index 8b7d5a47045..ce75f71fdfc 100644 --- a/src/traces/carpet/calc_labels.js +++ b/src/traces/carpet/calc_labels.js @@ -13,7 +13,10 @@ module.exports = function calcLabels(trace, axis) { gridline = gridlines[i]; if(['start', 'both'].indexOf(axis.showticklabels) !== -1) { - tobj = Axes.tickText(axis, gridline.value); + tobj = Axes.tickText(axis, gridline.value, false, false, { + first: i === 0, + last: i === gridlines.length - 1, + }); extendFlat(tobj, { prefix: prefix, @@ -32,7 +35,10 @@ module.exports = function calcLabels(trace, axis) { } if(['end', 'both'].indexOf(axis.showticklabels) !== -1) { - tobj = Axes.tickText(axis, gridline.value); + tobj = Axes.tickText(axis, gridline.value, false, false, { + first: i === 0, + last: i === gridlines.length - 1, + }); extendFlat(tobj, { endAnchor: false, diff --git a/src/traces/choropleth/defaults.js b/src/traces/choropleth/defaults.js index 795167eb3ca..7b1e5c4dff1 100644 --- a/src/traces/choropleth/defaults.js +++ b/src/traces/choropleth/defaults.js @@ -4,12 +4,6 @@ var Lib = require('../../lib'); var colorscaleDefaults = require('../../components/colorscale/defaults'); var attributes = require('./attributes'); -const locationmodeBreakingChangeWarning = [ - 'The library used by the *country names* `locationmode` option is changing in the next major version.', - 'Some country names in existing plots may not work in the new version.', - 'To ensure consistent behavior, consider setting `locationmode` to *ISO-3*.' -].join(' '); - module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { function coerce(attr, dflt) { return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); @@ -34,10 +28,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout var locationMode = coerce('locationmode', locationmodeDflt); - if (locationMode === 'country names') { - Lib.warn(locationmodeBreakingChangeWarning); - } - if (locationMode === 'geojson-id') { coerce('featureidkey'); } diff --git a/src/traces/cone/defaults.js b/src/traces/cone/defaults.js index 459be0f43f9..53e25e8ea97 100644 --- a/src/traces/cone/defaults.js +++ b/src/traces/cone/defaults.js @@ -63,6 +63,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('yhoverformat'); coerce('zhoverformat'); - // disable 1D transforms (for now) + // Ensure _length is defined traceOut._length = null; }; diff --git a/src/traces/contour/attributes.js b/src/traces/contour/attributes.js index e28bab378a6..252d38cd978 100644 --- a/src/traces/contour/attributes.js +++ b/src/traces/contour/attributes.js @@ -206,7 +206,7 @@ module.exports = extendFlat( '*][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]`', 'Open vs. closed intervals make no difference to constraint display, but', - 'all versions are allowed for consistency with filter transforms.' + 'all versions are allowed.' ].join(' ') }, value: { diff --git a/src/traces/contour/constraint_mapping.js b/src/traces/contour/constraint_mapping.js index ba1560ccb7d..93c99258a65 100644 --- a/src/traces/contour/constraint_mapping.js +++ b/src/traces/contour/constraint_mapping.js @@ -3,8 +3,9 @@ var filterOps = require('../../constants/filter_ops'); var isNumeric = require('fast-isnumeric'); -// This syntax conforms to the existing filter transform syntax, but we don't care -// about open vs. closed intervals for simply drawing contours constraints: +// This syntax uses the comparison and interval operations defined in +// src/constants/filter_ops.js, but we don't care about open vs. closed intervals +// for the purpose of drawing contours constraints module.exports = { '[]': makeRangeSettings('[]'), '][': makeRangeSettings(']['), @@ -13,8 +14,7 @@ module.exports = { '=': makeInequalitySettings('=') }; -// This does not in any way shape or form support calendars. It's adapted from -// transforms/filter.js. +// This does not in any way shape or form support calendars function coerceValue(operation, value) { var hasArrayValue = Array.isArray(value); diff --git a/src/traces/heatmap/plot.js b/src/traces/heatmap/plot.js index 1d812bbd2df..901974044c2 100644 --- a/src/traces/heatmap/plot.js +++ b/src/traces/heatmap/plot.js @@ -1,7 +1,6 @@ 'use strict'; var d3 = require('@plotly/d3'); -var tinycolor = require('tinycolor2'); var Registry = require('../../registry'); var Drawing = require('../../components/drawing'); @@ -201,20 +200,20 @@ module.exports = function (gd, plotinfo, cdheatmaps, heatmapLayer) { var xb, xi, v, row, c; - function setColor(v, pixsize) { - if (v !== undefined) { - var c = sclFunc(v); - c[0] = Math.round(c[0]); - c[1] = Math.round(c[1]); - c[2] = Math.round(c[2]); - - pixcount += pixsize; - rcount += c[0] * pixsize; - gcount += c[1] * pixsize; - bcount += c[2] * pixsize; - return c; - } - return [0, 0, 0, 0]; + function setColor(v, pixsize = 0) { + if (v === undefined) return [0, 0, 0, 0]; + + var c = sclFunc(v); + c[0] = Math.round(c[0]); + c[1] = Math.round(c[1]); + c[2] = Math.round(c[2]); + + pixcount += pixsize; + rcount += c[0] * pixsize; + gcount += c[1] * pixsize; + bcount += c[2] * pixsize; + + return c; } function interpColor(r0, r1, xinterp, yinterp) { @@ -343,13 +342,17 @@ module.exports = function (gd, plotinfo, cdheatmaps, heatmapLayer) { } } - rcount = Math.round(rcount / pixcount); - gcount = Math.round(gcount / pixcount); - bcount = Math.round(bcount / pixcount); - var avgColor = tinycolor('rgb(' + rcount + ',' + gcount + ',' + bcount + ')'); + // Guard against dividing by zero and the resulting bad color string + if (pixcount) { + rcount = Math.round(rcount / pixcount); + gcount = Math.round(gcount / pixcount); + bcount = Math.round(bcount / pixcount); + + const cstr = `rgb(${rcount}, ${gcount}, ${bcount})`; - gd._hmpixcount = (gd._hmpixcount || 0) + pixcount; - gd._hmlumcount = (gd._hmlumcount || 0) + pixcount * avgColor.getLuminance(); + gd._hmpixcount = (gd._hmpixcount || 0) + pixcount; + gd._hmlumcount = (gd._hmlumcount || 0) + pixcount * Color.color(cstr).luminosity(); + } var image3 = plotGroup.selectAll('image').data(cd); @@ -540,7 +543,9 @@ module.exports = function (gd, plotinfo, cdheatmaps, heatmapLayer) { var fontColor = font.color; if (!fontColor || fontColor === 'auto') { fontColor = Color.contrast( - d.z === undefined ? gd._fullLayout.plot_bgcolor : 'rgba(' + sclFunc(d.z).join() + ')' + d.z === undefined + ? gd._fullLayout.plot_bgcolor + : `rgba(${sclFunc(d.z).map(Math.round).join()})` ); } diff --git a/src/traces/histogram/bin_attributes.js b/src/traces/histogram/bin_attributes.js index ab6e49b5835..a0714de6c10 100644 --- a/src/traces/histogram/bin_attributes.js +++ b/src/traces/histogram/bin_attributes.js @@ -53,7 +53,7 @@ module.exports = function makeBinAttrs(axLetter, match) { (match ? ( 'If multiple non-overlaying histograms share a subplot, ' + 'the first explicit `size` is used and all others discarded. ' + - 'If no `size` is provided,the sample data from all traces ' + + 'If no `size` is provided, the sample data from all traces ' + 'is combined to determine `size` as described above.' ) : '') ].join(' ') diff --git a/src/traces/histogram/event_data.js b/src/traces/histogram/event_data.js index db61fccc7db..fa77384d38e 100644 --- a/src/traces/histogram/event_data.js +++ b/src/traces/histogram/event_data.js @@ -22,17 +22,7 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { delete out.pointNumber; delete out.pointIndex; - var pointIndices; - if(trace._indexToPoints) { - pointIndices = []; - for(var i = 0; i < pts.length; i++) { - pointIndices = pointIndices.concat(trace._indexToPoints[pts[i]]); - } - } else { - pointIndices = pts; - } - - out.pointIndices = pointIndices; + out.pointIndices = pts; } return out; diff --git a/src/traces/icicle/defaults.js b/src/traces/icicle/defaults.js index 4c4ad48332a..7827ef71495 100644 --- a/src/traces/icicle/defaults.js +++ b/src/traces/icicle/defaults.js @@ -95,6 +95,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleDomainDefaults(traceOut, layout, coerce); - // do not support transforms for now + // Ensure _length is defined traceOut._length = null; }; diff --git a/src/traces/image/attributes.js b/src/traces/image/attributes.ts similarity index 81% rename from src/traces/image/attributes.js rename to src/traces/image/attributes.ts index 2d9ce34163c..80779d449e1 100644 --- a/src/traces/image/attributes.js +++ b/src/traces/image/attributes.ts @@ -1,21 +1,20 @@ -'use strict'; +import { extendFlat } from '../../lib/extend'; +import baseAttrs from '../../plots/attributes'; +import { hovertemplateAttrs, templatefallbackAttrs } from '../../plots/template_attributes'; +import type { AttributeMap } from '../../types/lib/attributes'; +import { zorder } from '../scatter/attributes'; +import { colormodel } from './constants'; -var baseAttrs = require('../../plots/attributes'); -var zorder = require('../scatter/attributes').zorder; -const { hovertemplateAttrs, templatefallbackAttrs } = require('../../plots/template_attributes'); -var extendFlat = require('../../lib/extend').extendFlat; -var colormodel = require('./constants').colormodel; - -var cm = ['rgb', 'rgba', 'rgba256', 'hsl', 'hsla']; -var zminDesc = []; -var zmaxDesc = []; -for (var i = 0; i < cm.length; i++) { - var cr = colormodel[cm[i]]; - zminDesc.push('For the `' + cm[i] + '` colormodel, it is [' + (cr.zminDflt || cr.min).join(', ') + '].'); - zmaxDesc.push('For the `' + cm[i] + '` colormodel, it is [' + (cr.zmaxDflt || cr.max).join(', ') + '].'); +const cm = ['rgb', 'rgba', 'rgba256', 'hsl', 'hsla'] as const; +const zminDesc: string[] = []; +const zmaxDesc: string[] = []; +for (const name of cm) { + const cr: any = colormodel[name]; + zminDesc.push(`For the \`${name}\` colormodel, it is [${(cr.zminDflt || cr.min).join(', ')}].`); + zmaxDesc.push(`For the \`${name}\` colormodel, it is [${(cr.zmaxDflt || cr.max).join(', ')}].`); } -module.exports = extendFlat({ +const attributes = { source: { valType: 'string', editType: 'calc', @@ -43,7 +42,7 @@ module.exports = extendFlat({ }, zsmooth: { valType: 'enumerated', - values: ['fast', false], + values: ['fast', false] as const, dflt: false, editType: 'plot', description: [ @@ -133,5 +132,7 @@ module.exports = extendFlat({ hovertemplate: hovertemplateAttrs({}, { keys: ['z', 'color', 'colormodel'] }), hovertemplatefallback: templatefallbackAttrs(), - zorder: zorder -}); + zorder: zorder as any +} as const satisfies AttributeMap; + +export default attributes; diff --git a/src/traces/image/defaults.js b/src/traces/image/defaults.js index 9a2efa00528..2d218c65265 100644 --- a/src/traces/image/defaults.js +++ b/src/traces/image/defaults.js @@ -1,7 +1,7 @@ 'use strict'; var Lib = require('../../lib'); -var attributes = require('./attributes'); +var attributes = require('./attributes').default; var constants = require('./constants'); var dataUri = require('../../snapshot/helpers').IMAGE_URL_PREFIX; diff --git a/src/traces/image/index.js b/src/traces/image/index.js index 89c31c77d87..9fab3946222 100644 --- a/src/traces/image/index.js +++ b/src/traces/image/index.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - attributes: require('./attributes'), + attributes: require('./attributes').default, supplyDefaults: require('./defaults'), calc: require('./calc'), plot: require('./plot'), diff --git a/src/traces/indicator/defaults.js b/src/traces/indicator/defaults.js index 3da64f53514..98b47cb79ac 100644 --- a/src/traces/indicator/defaults.js +++ b/src/traces/indicator/defaults.js @@ -146,7 +146,7 @@ function supplyDefaults(traceIn, traceOut, defaultColor, layout) { traceOut._isAngular = traceOut._isBullet = false; } - // disable 1D transforms + // Ensure _length is defined traceOut._length = null; } diff --git a/src/traces/isosurface/defaults.js b/src/traces/isosurface/defaults.js index c0553d80897..13fb01c5b11 100644 --- a/src/traces/isosurface/defaults.js +++ b/src/traces/isosurface/defaults.js @@ -100,7 +100,7 @@ function supplyIsoDefaults(traceIn, traceOut, defaultColor, layout, coerce) { colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'c'}); - // disable 1D transforms (for now) + // Ensure _length is defined traceOut._length = null; } diff --git a/src/traces/mesh3d/attributes.js b/src/traces/mesh3d/attributes.js index 05da8a66992..5386ae9c911 100644 --- a/src/traces/mesh3d/attributes.js +++ b/src/traces/mesh3d/attributes.js @@ -51,7 +51,7 @@ module.exports = extendFlat( editType: 'calc', description: [ 'A vector of vertex indices, i.e. integer values between 0 and the length of the vertex', - 'vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}` ', + 'vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}`', 'together represent face m (triangle m) in the mesh, where `j[m] = n` points to the triplet', '`{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `j` represents a', 'point in space, which is the second vertex of a triangle.' @@ -63,7 +63,7 @@ module.exports = extendFlat( description: [ 'A vector of vertex indices, i.e. integer values between 0 and the length of the vertex', 'vectors, representing the *third* vertex of a triangle. For example, `{i[m], j[m], k[m]}`', - 'together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet ', + 'together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet', '`{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `k` represents a', 'point in space, which is the third vertex of a triangle.' ].join(' ') diff --git a/src/traces/mesh3d/defaults.js b/src/traces/mesh3d/defaults.js index 26cf1b475b3..57bfccea924 100644 --- a/src/traces/mesh3d/defaults.js +++ b/src/traces/mesh3d/defaults.js @@ -92,8 +92,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('yhoverformat'); coerce('zhoverformat'); - // disable 1D transforms - // x/y/z should match lengths, and i/j/k should match as well, but - // the two sets have different lengths so transforms wouldn't work. + // Ensure _length is defined traceOut._length = null; }; diff --git a/src/traces/ohlc/attributes.js b/src/traces/ohlc/attributes.js index df0f3e100ee..cfc5199f10c 100644 --- a/src/traces/ohlc/attributes.js +++ b/src/traces/ohlc/attributes.js @@ -65,7 +65,7 @@ module.exports = { line: { width: extendFlat({}, lineAttrs.width, { description: [ - lineAttrs.width, + lineAttrs.width.description, 'Note that this style setting can also be set per', 'direction via `increasing.line.width` and', '`decreasing.line.width`.' diff --git a/src/traces/ohlc/index.js b/src/traces/ohlc/index.js index dea32e3b0b8..3fb3220d94f 100644 --- a/src/traces/ohlc/index.js +++ b/src/traces/ohlc/index.js @@ -13,7 +13,7 @@ module.exports = { 'The tip of the lines represent the `low` and `high` values and', 'the horizontal segments represent the `open` and `close` values.', - 'Sample points where the close value is higher (lower) then the open', + 'Sample points where the close value is higher (lower) than the open', 'value are called increasing (decreasing).', 'By default, increasing items are drawn in green whereas', diff --git a/src/traces/parcats/parcats.js b/src/traces/parcats/parcats.js index 39f75d3b674..8ce8fa93905 100644 --- a/src/traces/parcats/parcats.js +++ b/src/traces/parcats/parcats.js @@ -3,11 +3,11 @@ var d3 = require('@plotly/d3'); var interpolateNumber = require('d3-interpolate').interpolateNumber; var Plotly = require('../../plot_api/plot_api'); +const Color = require('../../components/color'); var Fx = require('../../components/fx'); var Lib = require('../../lib'); var strTranslate = Lib.strTranslate; var Drawing = require('../../components/drawing'); -var tinycolor = require('tinycolor2'); var svgTextUtils = require('../../lib/svg_text_utils'); function performPlot(parcatsModels, graphDiv, layout, svg) { @@ -426,7 +426,7 @@ function mouseoverPath(d) { var hoverCenterX = d.parcatsViewModel.x + pathCenterX; var hoverCenterY = d.parcatsViewModel.y + pathCenterY; - var textColor = tinycolor.mostReadable(d.model.color, ['black', 'white']); + var textColor = Color.mostReadable(d.model.color); var count = d.model.count; var prob = count / d.parcatsViewModel.model.count; @@ -575,9 +575,7 @@ function stylePathsNoHover(pathSelection) { function stylePathsHover(pathSelection) { pathSelection .attr('fill-opacity', 0.8) - .attr('stroke', function(d) { - return tinycolor.mostReadable(d.model.color, ['black', 'white']); - }) + .attr('stroke', d => Color.mostReadable(d.model.color)) .attr('stroke-width', 0.3); } @@ -936,7 +934,7 @@ function createHoverLabelForColorHovermode(gd, rootBBox, bandElement) { var hovertext = hoverinfoParts.join('
'); // Compute text color - var textColor = tinycolor.mostReadable(bandViewModel.color, ['black', 'white']); + var textColor = Color.mostReadable(bandViewModel.color); return { trace: trace, diff --git a/src/traces/parcoords/plot.js b/src/traces/parcoords/plot.js index f2d2a0b0832..5a025df2e9a 100644 --- a/src/traces/parcoords/plot.js +++ b/src/traces/parcoords/plot.js @@ -32,17 +32,15 @@ var exports = module.exports = function plot(gd, cdModule) { var currentDims = {}; var initialDims = {}; - var fullIndices = {}; - var inputIndices = {}; + var traceIndices = {}; var size = fullLayout._size; cdModule.forEach(function(d, i) { var trace = d[0].trace; - fullIndices[i] = trace.index; - var iIn = inputIndices[i] = trace.index; - currentDims[i] = gd.data[iIn].dimensions; - initialDims[i] = gd.data[iIn].dimensions.slice(); + var ind = traceIndices[i] = trace.index; + currentDims[i] = gd.data[ind].dimensions; + initialDims[i] = gd.data[ind].dimensions.slice(); }); var filterChanged = function(i, initialDimIndex, newRanges) { @@ -57,13 +55,13 @@ var exports = module.exports = function plot(gd, cdModule) { // because it's an array of variable dimensionality. So store the whole // thing at once manually. var aStr = 'dimensions[' + initialDimIndex + '].constraintrange'; - var preGUI = fullLayout._tracePreGUI[gd._fullData[fullIndices[i]]._fullInput.uid]; + var preGUI = fullLayout._tracePreGUI[gd._fullData[traceIndices[i]].uid]; if(preGUI[aStr] === undefined) { var initialVal = dim.constraintrange; preGUI[aStr] = initialVal || null; } - var fullDimension = gd._fullData[fullIndices[i]].dimensions[initialDimIndex]; + var fullDimension = gd._fullData[traceIndices[i]].dimensions[initialDimIndex]; if(!newConstraints.length) { delete dim.constraintrange; @@ -79,7 +77,7 @@ var exports = module.exports = function plot(gd, cdModule) { var restyleData = {}; restyleData[aStr] = newConstraints; - gd.emit('plotly_restyle', [restyleData, [inputIndices[i]]]); + gd.emit('plotly_restyle', [restyleData, [traceIndices[i]]]); }; var hover = function(eventData) { @@ -115,12 +113,12 @@ var exports = module.exports = function plot(gd, cdModule) { // persist column order we may have to do something special for this // case to just store the order itself. // Registry.call('_storeDirectGUIEdit', - // gd.data[inputIndices[i]], - // fullLayout._tracePreGUI[gd._fullData[fullIndices[i]]._fullInput.uid], + // gd.data[traceIndices[i]], + // fullLayout._tracePreGUI[gd._fullData[traceIndices[i]].uid], // {dimensions: currentDims[i]} // ); - gd.emit('plotly_restyle', [{dimensions: [currentDims[i]]}, [inputIndices[i]]]); + gd.emit('plotly_restyle', [{dimensions: [currentDims[i]]}, [traceIndices[i]]]); }; parcoords( diff --git a/src/traces/pie/calc.js b/src/traces/pie/calc.js index 1fe5541e7d5..e480bb1cb4f 100644 --- a/src/traces/pie/calc.js +++ b/src/traces/pie/calc.js @@ -1,7 +1,6 @@ 'use strict'; var isNumeric = require('fast-isnumeric'); -var tinycolor = require('tinycolor2'); var Color = require('../../components/color'); @@ -89,15 +88,12 @@ function calc(gd, trace) { function makePullColorFn(colorMap) { return function pullColor(color, id) { - if(!color) return false; + if(!color || !Color.isValid(color)) return false; - color = tinycolor(color); - if(!color.isValid()) return false; + const newColor = Color.color(color).rgb().string(); + if(!colorMap[id]) colorMap[id] = newColor; - color = Color.addOpacity(color, color.getAlpha()); - if(!colorMap[id]) colorMap[id] = color; - - return color; + return newColor; }; } @@ -154,11 +150,11 @@ function generateExtendedColors(colorList, extendedColorWays) { colors = colorList.slice(); for(i = 0; i < colorList.length; i++) { - colors.push(tinycolor(colorList[i]).lighten(20).toHexString()); + colors.push(Color.adjustLightness(colorList[i], 20).hex()); } for(i = 0; i < colorList.length; i++) { - colors.push(tinycolor(colorList[i]).darken(20).toHexString()); + colors.push(Color.adjustLightness(colorList[i], -20).hex()); } extendedColorWays[colorString] = colors; } diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js new file mode 100644 index 00000000000..b163793051e --- /dev/null +++ b/src/traces/quiver/attributes.js @@ -0,0 +1,216 @@ +'use strict'; + +var baseAttrs = require('../../plots/attributes'); +var hovertemplateAttrs = require('../../plots/template_attributes').hovertemplateAttrs; +var fontAttrs = require('../../plots/font_attributes'); +var axisHoverFormat = require('../../plots/cartesian/axis_format_attributes').axisHoverFormat; +var extendFlat = require('../../lib/extend').extendFlat; +var colorScaleAttrs = require('../../components/colorscale/attributes'); +var dash = require('../../components/drawing/attributes').dash; +var annotationAttrs = require('../../components/annotations/attributes'); +var scatterAttrs = require('../scatter/attributes'); + +var attrs = { + x: { + valType: 'data_array', + editType: 'calc+clearAxisTypes', + anim: true, + description: 'Sets the x coordinates of the arrow locations.' + }, + x0: scatterAttrs.x0, + dx: scatterAttrs.dx, + y: { + valType: 'data_array', + editType: 'calc+clearAxisTypes', + anim: true, + description: 'Sets the y coordinates of the arrow locations.' + }, + y0: scatterAttrs.y0, + dy: scatterAttrs.dy, + u: { + valType: 'data_array', + editType: 'calc', + anim: true, + description: 'Sets the x components of the arrow vectors.' + }, + v: { + valType: 'data_array', + editType: 'calc', + anim: true, + description: 'Sets the y components of the arrow vectors.' + }, + sizemode: { + valType: 'enumerated', + values: ['scaled', 'absolute', 'raw'], + editType: 'calc', + dflt: 'scaled', + description: [ + 'Determines whether `sizeref` is set as a *scaled* (unitless) scalar', + '(normalized by the max u/v norm in the vector field), as an *absolute*', + 'value (in the same units as the vector field), or *raw* to use the', + 'raw vector lengths.' + ].join(' ') + }, + sizeref: { + valType: 'number', + min: 0, + editType: 'calc', + description: [ + 'Adjusts the arrow size scaling.', + 'The arrow length is determined by the vector norm multiplied by `sizeref`,', + 'optionally normalized when `sizemode` is *scaled*.' + ].join(' ') + }, + anchor: { + valType: 'enumerated', + values: ['tip', 'tail', 'center'], + dflt: 'tail', + editType: 'calc', + description: [ + 'Sets the arrows\' anchor with respect to their (x,y) positions.', + 'Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head,', + 'or *center* to center the arrow on (x,y).' + ].join(' ') + }, + hoverdistance: { + valType: 'number', + min: -1, + dflt: 20, + editType: 'calc', + description: 'Maximum distance (in pixels) to look for nearby arrows on hover.' + }, + + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + uhoverformat: axisHoverFormat('u', 'noDate'), + vhoverformat: axisHoverFormat('v', 'noDate'), + + // Text and labels + text: { + valType: 'data_array', + editType: 'calc', + anim: true, + description: 'Sets text elements associated with each (x,y) pair.' + }, + textposition: { + valType: 'enumerated', + values: [ + 'top left', 'top center', 'top right', + 'middle left', 'middle center', 'middle right', + 'bottom left', 'bottom center', 'bottom right' + ], + dflt: 'middle center', + editType: 'calc', + description: 'Sets the positions of the `text` elements with respects to the (x,y) coordinates.' + }, + // Text font + textfont: fontAttrs({ + editType: 'calc', + colorEditType: 'style', + arrayOk: true, + description: 'Sets the text font.' + }), + + // Marker: color, colorscale, arrowhead sizing, and line styling for arrows + marker: extendFlat( + { + arrowsize: extendFlat({}, annotationAttrs.arrowsize, { + editType: 'calc', + description: [ + 'Sets the size of the arrow head relative to `marker.line.width`.', + 'A value of 1 (default) gives a head about 3x as wide as the line.' + ].join(' ') + }), + line: { + width: { + valType: 'number', + min: 0, + dflt: 1, + editType: 'style', + description: 'Sets the width (in px) of the arrow lines.' + }, + dash: dash, + editType: 'style' + }, + editType: 'calc' + }, + colorScaleAttrs('marker', { + showScaleDflt: true, + editTypeOverride: 'calc' + }) + ), + selected: { + marker: { + color: { + valType: 'color', + editType: 'style', + description: 'Sets the marker color of selected points.' + }, + line: { + width: { + valType: 'number', + min: 0, + editType: 'style', + description: 'Sets the line width of selected points.' + }, + editType: 'style' + }, + editType: 'style' + }, + textfont: { + color: { + valType: 'color', + editType: 'style', + description: 'Sets the text font color of selected points, applied only when a selection exists.' + }, + editType: 'style' + }, + editType: 'style' + }, + unselected: { + marker: { + color: { + valType: 'color', + editType: 'style', + description: 'Sets the marker color of unselected points, applied only when a selection exists.' + }, + line: { + width: { + valType: 'number', + min: 0, + editType: 'style', + description: 'Sets the line width of unselected points, applied only when a selection exists.' + }, + editType: 'style' + }, + editType: 'style' + }, + textfont: { + color: { + valType: 'color', + editType: 'style', + description: 'Sets the text font color of unselected points, applied only when a selection exists.' + }, + editType: 'style' + }, + editType: 'style' + } +}; + +// Extend with base attributes (includes hoverinfo, etc.), keeping the +// quiver-specific attributes layered on top of the shared base attributes. +attrs = extendFlat({}, baseAttrs, attrs); + +// Add hoverinfo with proper flags for quiver +// We need to create a new object to avoid mutating the shared base attributes +attrs.hoverinfo = extendFlat({}, baseAttrs.hoverinfo, { + flags: ['x', 'y', 'u', 'v', 'text', 'name'], + dflt: 'all' +}); + +// Add hovertemplate +attrs.hovertemplate = extendFlat({}, hovertemplateAttrs({}, { + keys: ['x', 'y', 'u', 'v', 'text', 'name'] +})); + +module.exports = attrs; diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js new file mode 100644 index 00000000000..3e720fe0da2 --- /dev/null +++ b/src/traces/quiver/calc.js @@ -0,0 +1,196 @@ +'use strict'; + +var Lib = require('../../lib'); +var Axes = require('../../plots/cartesian/axes'); +var isNumeric = require('fast-isnumeric'); +var BADNUM = require('../../constants/numerical').BADNUM; +var colorscaleCalc = require('../../components/colorscale/calc'); +var calcSelection = require('../scatter/calc_selection'); + +/** + * Main calculation function for quiver trace + * Creates calcdata with arrow path data for each vector + */ +module.exports = function calc(gd, trace) { + // Map x/y through axes so category/date values become numeric calcdata + var xa = trace._xA = Axes.getFromId(gd, trace.xaxis || 'x', 'x'); + var ya = trace._yA = Axes.getFromId(gd, trace.yaxis || 'y', 'y'); + + var xVals = xa.makeCalcdata(trace, 'x'); + var yVals = ya.makeCalcdata(trace, 'y'); + + var len = Math.min(xVals.length, yVals.length); + trace._length = len; + var cd = new Array(len); + + var normMin = Infinity; + var normMax = -Infinity; + var cMin = Infinity; + var cMax = -Infinity; + var markerColor = (trace.marker || {}).color; + var hasMarkerColorArray = Lib.isArrayOrTypedArray(markerColor); + + var uArr = trace.u || []; + var vArr = trace.v || []; + + // First pass: build calcdata and compute maxNorm (needed for 'scaled' sizemode) + for(var i = 0; i < len; i++) { + var cdi = cd[i] = { i: i }; + var xValid = isNumeric(xVals[i]); + var yValid = isNumeric(yVals[i]); + + if(xValid && yValid) { + cdi.x = xVals[i]; + cdi.y = yVals[i]; + } else { + cdi.x = BADNUM; + cdi.y = BADNUM; + } + + var ui = uArr[i] || 0; + var vi = vArr[i] || 0; + var norm = Math.sqrt(ui * ui + vi * vi); + + if(isFinite(norm)) { + if(norm > normMax) normMax = norm; + if(norm < normMin) normMin = norm; + } + + if(hasMarkerColorArray) { + var ci = markerColor[i]; + if(isNumeric(ci)) { + if(ci < cMin) cMin = ci; + if(ci > cMax) cMax = ci; + } + } + } + + // Store maxNorm for use by plot.js + trace._maxNorm = normMax; + + // Compute arrow geometry for axis autorange. + // + // The v-component is drawn directly in data space, so each arrow's y-tip is + // exact and we expand the y-axis here with the tip coordinates. The + // u-component is stretched by scaleRatio = pxPerY / pxPerX in plot.js so + // that arrows keep their on-screen angle, which makes an arrow's *horizontal + // pixel extent* depend on the y-scale rather than the x-scale: + // |dx_px| = pxPerY * baseLen * |unitx| + // We therefore expand the x-axis with pixel padding (ppad) rather than + // data-space tips (whose data width would depend on the very x-range we are + // trying to compute). Since that ppad depends on the y-scale - which depends + // on the combined y-extent of every quiver trace sharing the axis - the + // x-axis expansion is finished in crossTraceCalc; here we stash the per-point + // geometry and y-bounds it needs. + var sizemode = trace.sizemode || 'scaled'; + var sizeref = (trace.sizeref !== undefined) ? trace.sizeref : (sizemode === 'raw' ? 1 : 0.5); + var anchor = trace.anchor || 'tail'; + var isTip = anchor === 'tip'; + var isCenter = anchor === 'center'; + + var baseX = new Array(len); + var tipsY = new Array(len * 2); + var geomLen = new Array(len); + var geomUx = new Array(len); + + var yMin = Infinity; + var yMax = -Infinity; + + for(var k = 0; k < len; k++) { + var xk = xVals[k]; + var yk = yVals[k]; + var uk = uArr[k] || 0; + var vk = vArr[k] || 0; + var nk = Math.sqrt(uk * uk + vk * vk); + + var baseLen; + if(sizemode === 'scaled') { + baseLen = normMax ? (nk / normMax) * sizeref : 0; + } else { + baseLen = nk * sizeref; + } + + var unitxk = nk ? (uk / nk) : 0; + var unityk = nk ? (vk / nk) : 0; + var dyk = unityk * baseLen; + + geomLen[k] = baseLen; + geomUx[k] = unitxk; + baseX[k] = xk; + + var y0, y1; + if(isTip) { + y1 = yk; + y0 = yk - dyk; + } else if(isCenter) { + y0 = yk - dyk / 2; + y1 = yk + dyk / 2; + } else { // tail (default) + y0 = yk; + y1 = yk + dyk; + } + tipsY[k * 2] = y0; + tipsY[k * 2 + 1] = y1; + + if(isNumeric(y0)) { + if(y0 < yMin) yMin = y0; + if(y0 > yMax) yMax = y0; + } + if(isNumeric(y1)) { + if(y1 < yMin) yMin = y1; + if(y1 > yMax) yMax = y1; + } + } + + xa._minDtick = 0; + ya._minDtick = 0; + + // y-axis: arrow tips are exact in data space. + trace._extremes[ya._id] = Axes.findExtremes(ya, tipsY, {padded: true}); + + // x-axis: provisional bound from the base positions only; crossTraceCalc + // replaces this with a ppad-based expansion once the combined y-scale across + // all quiver traces on this axis is known. + trace._extremes[xa._id] = Axes.findExtremes(xa, baseX, {padded: true}); + + // Geometry needed to finish the x-axis expansion in crossTraceCalc. + trace._quiver = { + baseX: baseX, + geomLen: geomLen, + geomUx: geomUx, + isTip: isTip, + isCenter: isCenter, + yMin: yMin, + yMax: yMax + }; + + // Merge text arrays into calcdata for Drawing.textPointStyle + Lib.mergeArray(trace.text, cd, 'tx'); + Lib.mergeArray(trace.textposition, cd, 'tp'); + if(trace.textfont) { + Lib.mergeArrayCastPositive(trace.textfont.size, cd, 'ts'); + Lib.mergeArray(trace.textfont.color, cd, 'tc'); + Lib.mergeArray(trace.textfont.family, cd, 'tf'); + Lib.mergeArray(trace.textfont.weight, cd, 'tw'); + Lib.mergeArray(trace.textfont.style, cd, 'ty'); + Lib.mergeArray(trace.textfont.variant, cd, 'tv'); + } + + // Colorscale cmin/cmax computation: prefer provided marker.color, else magnitude + if(trace._hasColorscale) { + var vals = hasMarkerColorArray ? [cMin, cMax] : [normMin, normMax]; + // Guard against all-invalid input (no finite values found), which would + // otherwise leave the seeds at +/-Infinity and feed them into the + // colorscale calc. Fall back to a neutral [0, 1] range. + if(!isFinite(vals[0]) || !isFinite(vals[1])) vals = [0, 1]; + colorscaleCalc(gd, trace, { + vals: vals, + containerStr: 'marker', + cLetter: 'c' + }); + } + + calcSelection(cd, trace); + + return cd; +}; diff --git a/src/traces/quiver/cross_trace_calc.js b/src/traces/quiver/cross_trace_calc.js new file mode 100644 index 00000000000..a4879155961 --- /dev/null +++ b/src/traces/quiver/cross_trace_calc.js @@ -0,0 +1,89 @@ +'use strict'; + +var Axes = require('../../plots/cartesian/axes'); + +/** + * Finish quiver x-axis autorange. + * + * An arrow's horizontal pixel extent is `pxPerY * baseLen * |unitx|` (see + * calc.js and plot.js), so it is governed by the y-scale, not the x-scale. The + * y-scale in turn depends on the combined y-extent of every quiver trace sharing + * the axis, which is only known here - after all per-trace calc() runs. We + * estimate pxPerY from that combined extent and expand the x-axis with pixel + * padding so the full arrows stay visible without a hard-coded range. + * + * Runs once per cartesian subplot (see Plots.doCrossTraceCalc). + */ +module.exports = function crossTraceCalc(gd, plotinfo) { + var xa = plotinfo.xaxis; + var ya = plotinfo.yaxis; + var fullData = gd._fullData; + + var traces = []; + var yMin = Infinity; + var yMax = -Infinity; + + for(var i = 0; i < fullData.length; i++) { + var trace = fullData[i]; + if( + trace.visible === true && + trace.type === 'quiver' && + trace.xaxis === xa._id && + trace.yaxis === ya._id && + trace._quiver + ) { + traces.push(trace); + var q = trace._quiver; + if(q.yMin < yMin) yMin = q.yMin; + if(q.yMax > yMax) yMax = q.yMax; + } + } + + if(!traces.length) return; + + // Estimate the final y-scale (pixels per y data unit). The y-axis only gets + // the standard 5%-per-side autorange padding, so its span ends up ~ span/0.9; + // a coincident set of points falls back to the autorange default span of 2. + // Using the quiver-only y-extent is a safe estimate: any extra (e.g. from + // other traces) can only widen the y-range, lowering pxPerY and leaving a + // little extra room on x rather than clipping. + ya.setScale(); + var yDataSpan = (yMax > yMin) ? (yMax - yMin) : 0; + var yEstSpan = yDataSpan > 0 ? (yDataSpan / 0.9) : 2; + var pxPerY = (ya._length && yEstSpan) ? (ya._length / yEstSpan) : 0; + + for(var t = 0; t < traces.length; t++) { + var tr = traces[t]; + var q2 = tr._quiver; + var baseX = q2.baseX; + var geomLen = q2.geomLen; + var geomUx = q2.geomUx; + var len = baseX.length; + + var ppadplus = new Array(len); + var ppadminus = new Array(len); + + for(var j = 0; j < len; j++) { + var xPixExt = pxPerY * geomLen[j] * Math.abs(geomUx[j]); + var plus = 0; + var minus = 0; + if(q2.isCenter) { + plus = minus = xPixExt / 2; + } else if(q2.isTip) { + if(geomUx[j] >= 0) minus = xPixExt; + else plus = xPixExt; + } else { // tail + if(geomUx[j] >= 0) plus = xPixExt; + else minus = xPixExt; + } + ppadplus[j] = plus; + ppadminus[j] = minus; + } + + tr._extremes[xa._id] = Axes.findExtremes(xa, baseX, { + padded: true, + ppadplus: ppadplus, + ppadminus: ppadminus + }); + } +}; diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js new file mode 100644 index 00000000000..179b906a07d --- /dev/null +++ b/src/traces/quiver/defaults.js @@ -0,0 +1,93 @@ +'use strict'; + +var Lib = require('../../lib'); +var attributes = require('./attributes'); +var handleXYDefaults = require('../scatter/xy_defaults'); +var hasColorscale = require('../../components/colorscale/helpers').hasColorscale; +var colorscaleDefaults = require('../../components/colorscale/defaults'); + +module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { + function coerce(attr, dflt) { + return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); + } + + // Quiver requires explicit x and y inputs (no x0/dx or y0/dy fallback). + // Check presence on traceIn and let handleXYDefaults validate lengths. + if(traceIn.x === undefined || traceIn.y === undefined) { + traceOut.visible = false; + return; + } + + var len = handleXYDefaults(traceIn, traceOut, layout, coerce); + if(!len) { + traceOut.visible = false; + return; + } + + var u = coerce('u'); + var v = coerce('v'); + + // If u/v are missing, default to zeros so the trace participates in calc/category logic + if(!Lib.isArrayOrTypedArray(u) || u.length === 0) { + traceOut.u = new Array(len); + for(var i = 0; i < len; i++) traceOut.u[i] = 0; + } + if(!Lib.isArrayOrTypedArray(v) || v.length === 0) { + traceOut.v = new Array(len); + for(var j = 0; j < len; j++) traceOut.v[j] = 0; + } + + // Sizing API similar to cone + var sizemode = coerce('sizemode'); + coerce('sizeref', sizemode === 'raw' ? 1 : 0.5); + coerce('anchor'); + + // Arrow styling + coerce('marker.arrowsize'); + coerce('hoverdistance'); + + // Line styling under marker.line + coerce('marker.line.width'); + coerce('marker.line.dash'); + + // Text + coerce('text'); + coerce('textposition'); + Lib.coerceFont(coerce, 'textfont', layout.font); + + // Hover + coerce('hovertemplate'); + coerce('xhoverformat'); + coerce('yhoverformat'); + coerce('uhoverformat'); + coerce('vhoverformat'); + + // Colorscale defaults (adds colorscale, showscale, colorbar, etc.) + // Ensure traceOut.marker exists before colorscaleDefaults, which captures + // a reference to it via npMaybe at the start of its execution. + if(!traceOut.marker) traceOut.marker = {}; + coerce('marker.color', defaultColor); + var withColorscale = hasColorscale(traceIn, 'marker') || (traceIn.marker || {}).coloraxis; + traceOut._hasColorscale = !!withColorscale; + if(withColorscale) { + colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: 'marker.', cLetter: 'c' }); + } + + // Provide trace.line for compat with shared code (legend, getTraceColor) + var markerLine = traceOut.marker.line || {}; + var mc = traceOut.marker.color; + traceOut.line = { + width: markerLine.width, + color: Lib.isArrayOrTypedArray(mc) ? defaultColor : mc, + dash: markerLine.dash + }; + + // Selection styling + coerce('selected.marker.color'); + coerce('selected.marker.line.width'); + coerce('selected.textfont.color'); + coerce('unselected.marker.color'); + coerce('unselected.marker.line.width'); + coerce('unselected.textfont.color'); + +}; diff --git a/src/traces/quiver/event_data.js b/src/traces/quiver/event_data.js new file mode 100644 index 00000000000..bd8507a676c --- /dev/null +++ b/src/traces/quiver/event_data.js @@ -0,0 +1,10 @@ +'use strict'; + +module.exports = function eventData(out, pt, trace, cd, pointNumber) { + out.x = pt.x; + out.y = pt.y; + out.u = trace.u ? trace.u[pointNumber] : undefined; + out.v = trace.v ? trace.v[pointNumber] : undefined; + + return out; +}; diff --git a/src/traces/quiver/format_labels.js b/src/traces/quiver/format_labels.js new file mode 100644 index 00000000000..6ed314702ef --- /dev/null +++ b/src/traces/quiver/format_labels.js @@ -0,0 +1,30 @@ +'use strict'; + +var Axes = require('../../plots/cartesian/axes'); +var Lib = require('../../lib'); + +module.exports = function formatLabels(cdi, trace, fullLayout) { + var labels = {}; + + var mockGd = {_fullLayout: fullLayout}; + var xa = Axes.getFromTrace(mockGd, trace, 'x'); + var ya = Axes.getFromTrace(mockGd, trace, 'y'); + + var x = cdi.x; + var y = cdi.y; + + labels.xLabel = Axes.tickText(xa, xa.c2l(x), true).text; + labels.yLabel = Axes.tickText(ya, ya.c2l(y), true).text; + + var u = trace.u ? trace.u[cdi.i] : 0; + var v = trace.v ? trace.v[cdi.i] : 0; + + // Format u and v using hoverformat if provided + var uhoverformat = trace.uhoverformat; + var vhoverformat = trace.vhoverformat; + + labels.uLabel = uhoverformat ? Lib.numberFormat(uhoverformat)(u) : String(u); + labels.vLabel = vhoverformat ? Lib.numberFormat(vhoverformat)(v) : String(v); + + return labels; +}; diff --git a/src/traces/quiver/hover.js b/src/traces/quiver/hover.js new file mode 100644 index 00000000000..97eaea35aae --- /dev/null +++ b/src/traces/quiver/hover.js @@ -0,0 +1,64 @@ +'use strict'; + +var Lib = require('../../lib'); +var Fx = require('../../components/fx'); +var getTraceColor = require('../scatter/get_trace_color'); + +module.exports = function hoverPoints(pointData, xval, yval, hovermode) { + var cd = pointData.cd; + var trace = cd[0].trace; + var xa = pointData.xa; + var ya = pointData.ya; + var xpx = xa.c2p(xval); + var ypx = ya.c2p(yval); + + var distfn = function(di) { + var x = xa.c2p(di.x) - xpx; + var y = ya.c2p(di.y) - ypx; + return Math.sqrt(x * x + y * y); + }; + + Fx.getClosest(cd, distfn, pointData); + + // skip if we didn't find a close point + if(pointData.index === false) return; + + // the closest data point + var di = cd[pointData.index]; + var xc = xa.c2p(di.x, true); + var yc = ya.c2p(di.y, true); + + // now we're done using the whole `calcdata` array, replace the + // index with the original index + pointData.index = di.i; + + var u = trace.u ? trace.u[di.i] : 0; + var v = trace.v ? trace.v[di.i] : 0; + + // Build extraText to show u and v values + var extraText = 'u: ' + u + ', v: ' + v; + + Lib.extendFlat(pointData, { + color: getTraceColor(trace, di), + + x0: xc - 3, + x1: xc + 3, + xLabelVal: di.x, + + y0: yc - 3, + y1: yc + 3, + yLabelVal: di.y, + + uLabelVal: u, + vLabelVal: v, + + extraText: extraText, + + spikeDistance: Math.sqrt((xpx - xc) * (xpx - xc) + (ypx - yc) * (ypx - yc)), + hovertemplate: trace.hovertemplate + }); + + Lib.fillText(di, trace, pointData); + + return [pointData]; +}; diff --git a/src/traces/quiver/index.js b/src/traces/quiver/index.js new file mode 100644 index 00000000000..b4183ebac0e --- /dev/null +++ b/src/traces/quiver/index.js @@ -0,0 +1,34 @@ +'use strict'; + +module.exports = { + moduleType: 'trace', + name: 'quiver', + basePlotModule: require('../../plots/cartesian'), + categories: [ + 'cartesian', 'svg', 'showLegend', 'scatter-like', 'zoomScale' + ], + + attributes: require('./attributes'), + supplyDefaults: require('./defaults'), + calc: require('./calc'), + crossTraceCalc: require('./cross_trace_calc'), + plot: require('./plot'), + style: require('./style').style, + styleOnSelect: require('./style').styleOnSelect, + hoverPoints: require('./hover'), + formatLabels: require('./format_labels'), + eventData: require('./event_data'), + selectPoints: require('../scatter/select'), + colorbar: require('../scatter/marker_colorbar'), + animatable: true, + + meta: { + description: [ + 'The quiver trace type visualizes vector fields using arrows.', + 'Specify a vector field using 4 1D arrays:', + '2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`.', + 'The arrows are drawn exactly at the positions given by `x` and `y`.', + 'Arrow length and direction are determined by `u` and `v` components.' + ].join(' ') + } +}; diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js new file mode 100644 index 00000000000..98b592c5e23 --- /dev/null +++ b/src/traces/quiver/plot.js @@ -0,0 +1,233 @@ +'use strict'; + +var d3 = require('@plotly/d3'); + +var Lib = require('../../lib'); +var Drawing = require('../../components/drawing'); +var colorscaleStroke = require('./style').colorscaleStroke; + +// Length (px) of each arrowhead arm per unit of marker.line.width at +// arrowsize = 1. With the head's half-angle of PI/12, this yields an opening +// roughly 3x the line width, matching the `marker.arrowsize` spec +var HEAD_LEN_PER_WIDTH = 5.8; + +// Max arrowhead length as a fraction of the body length, so the head stays +// slightly shorter than the body for very short arrows +var MAX_HEAD_FRAC = 0.7; + +module.exports = function plot(gd, plotinfo, cdscatter, scatterLayer, transitionOpts, makeOnCompleteCallback) { + var join, onComplete; + + // If transition config is provided, then it is only a partial replot and traces not + // updated are removed. + var isFullReplot = !transitionOpts; + var hasTransition = !!transitionOpts && transitionOpts.duration > 0; + + join = scatterLayer.selectAll('g.trace') + .data(cdscatter, function(d) { return d[0].trace.uid; }); + + // Append new traces: + join.enter().append('g') + .attr('class', function(d) { + return 'trace quiver trace' + d[0].trace.uid; + }) + .style('stroke-miterlimit', 2); + join.order(); + + if(hasTransition) { + if(makeOnCompleteCallback) { + onComplete = makeOnCompleteCallback(); + } + + var transition = d3.transition() + .duration(transitionOpts.duration) + .ease(transitionOpts.easing) + .each('end', function() { + onComplete && onComplete(); + }) + .each('interrupt', function() { + onComplete && onComplete(); + }); + + transition.each(function() { + scatterLayer.selectAll('g.trace').each(function(d, i) { + plotOne(gd, i, plotinfo, d, cdscatter, this, transitionOpts); + }); + }); + } else { + join.each(function(d, i) { + plotOne(gd, i, plotinfo, d, cdscatter, this, transitionOpts); + }); + } + + if(isFullReplot) { + join.exit().remove(); + } +}; + +function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transitionOpts) { + var trace = cdscatter[0].trace; + var xa = plotinfo.xaxis; + var ya = plotinfo.yaxis; + + cdscatter[0][plotinfo.isRangePlot ? 'nodeRangePlot3' : 'node3'] = d3.select(element); + + // Create line group for arrows + var lines = d3.select(element).selectAll('g.lines') + .data([cdscatter]); + + lines.enter().append('g') + .classed('lines', true); + + Drawing.setClipUrl(lines, plotinfo.layerClipId, gd); + + // Create one path per data point (arrow) + var lineSegments = lines.selectAll('path.js-line') + .data(cdscatter); + + lineSegments.enter().append('path') + .classed('js-line', true) + .style('vector-effect', 'non-scaling-stroke'); + + lineSegments.exit().remove(); + + // Use maxNorm precomputed in calc + var maxNorm = trace._maxNorm || 0; + var sizemode = trace.sizemode || 'scaled'; + var sizeref = (trace.sizeref !== undefined) ? trace.sizeref : (sizemode === 'raw' ? 1 : 0.5); + var anchor = trace.anchor || 'tail'; + + // Update line segments + lineSegments.each(function(cdi) { + const path = d3.select(this); + + // Skip invalid points + if(cdi.x === undefined || cdi.y === undefined) { + path.attr('d', null); + return; + } + + // Compute arrow in data space + // Derive pixel-per-data scaling from axes at this point + const pxPerX = Math.abs(xa.c2p(cdi.x + 1) - xa.c2p(cdi.x)); + const pxPerY = Math.abs(ya.c2p(cdi.y + 1) - ya.c2p(cdi.y)); + const scaleRatio = (pxPerX && pxPerY) ? (pxPerY / pxPerX) : 1; + const markerArrowsize = (trace.marker || {}).arrowsize; + const arrowSizeVal = (markerArrowsize !== undefined) ? markerArrowsize : 1; + // Fixed arrowhead wedge angle (radians). Arrow direction is fully + // determined by u,v (see angPx below); this constant only controls the + // relative angle of the point of the arrowhead + const headAngle = Math.PI / 12; + + const u = (trace.u && trace.u[cdi.i]) || 0; + const v = (trace.v && trace.v[cdi.i]) || 0; + + const norm = Math.sqrt(u * u + v * v); + const unitx = norm ? (u / norm) : 0; + const unity = norm ? (v / norm) : 0; + var baseLen; + if(sizemode === 'scaled') { + var n = maxNorm ? (norm / maxNorm) : 0; + baseLen = n * sizeref; + } else { + baseLen = norm * sizeref; + } + + const dxBase = unitx * baseLen; + const dyBase = unity * baseLen; + const dx = dxBase * scaleRatio; + const dy = dyBase; + + var x0, y0, x1, y1; + if(anchor === 'tip') { + x1 = cdi.x; + y1 = cdi.y; + x0 = x1 - dx; + y0 = y1 - dy; + } else if(anchor === 'center') { + x0 = cdi.x - dx / 2; + y0 = cdi.y - dy / 2; + x1 = cdi.x + dx / 2; + y1 = cdi.y + dy / 2; + } else { // tail + x0 = cdi.x; + y0 = cdi.y; + x1 = x0 + dx; + y1 = y0 + dy; + } + + // Arrow body endpoints (px) + const p0x = xa.c2p(x0); + const p0y = ya.c2p(y0); + const p1x = xa.c2p(x1); + const p1y = ya.c2p(y1); + + // Arrowhead is sized in pixels (relative to the line width) + // so it remains the same regardless of zoom, rather than scaling with the data space + // Set max head size so the head stays slightly shorter than the arrow body + // (e.g. for very short arrows when zoomed out). No head for zero-length arrows. + const lineWidth = trace.marker.line.width; + const bodyLenPx = Math.sqrt((p1x - p0x) * (p1x - p0x) + (p1y - p0y) * (p1y - p0y)); + const maxHeadPx = MAX_HEAD_FRAC * bodyLenPx; + const headLenPx = Math.max(HEAD_LEN_PER_WIDTH * arrowSizeVal * lineWidth, maxHeadPx); + const angPx = Math.atan2(p1y - p0y, p1x - p0x); + + const ph1x = p1x - headLenPx * Math.cos(angPx - headAngle); + const ph1y = p1y - headLenPx * Math.sin(angPx - headAngle); + const ph2x = p1x - headLenPx * Math.cos(angPx + headAngle); + const ph2y = p1y - headLenPx * Math.sin(angPx + headAngle); + + const pathData = 'M' + p0x + ',' + p0y + 'L' + p1x + ',' + p1y + 'L' + ph1x + ',' + ph1y + 'L' + p1x + ',' + p1y + 'L' + ph2x + ',' + ph2y; + path.attr('d', pathData); + }); + + // Apply styling using Plotly's standard styling system + var marker = trace.marker || {}; + var markerLine = marker.line || {}; + var lineColor = Lib.isArrayOrTypedArray(marker.color) ? undefined : marker.color; + Drawing.lineGroupStyle(lineSegments, markerLine.width, lineColor, markerLine.dash); + + // If colorscale present, color arrows by marker.color or magnitude |(u,v)|. + // Shared with style.js so the static render and restyle stay in sync. + if(trace._hasColorscale) colorscaleStroke(lineSegments, trace); + + // Render text labels at data points + var textGroup = d3.select(element).selectAll('g.text') + .data([cdscatter]); + + textGroup.enter().append('g').classed('text', true); + + Drawing.setClipUrl(textGroup, plotinfo.layerClipId, gd); + + var textJoin = textGroup.selectAll('g.textpoint') + .data(cdscatter); + + textJoin.enter().append('g').classed('textpoint', true).append('text'); + textJoin.exit().remove(); + + textJoin.each(function(d) { + var g = d3.select(this); + var hasNode = Drawing.translatePoint(d, g.select('text'), xa, ya); + if(!hasNode) g.remove(); + }); + + textJoin.selectAll('text') + .call(Drawing.textPointStyle, trace, gd) + .each(function(d) { + var x = xa.c2p(d.x); + var y = ya.c2p(d.y); + d3.select(this).selectAll('tspan.line').each(function() { + d3.select(this).attr({x: x, y: y}); + }); + }); + + // Handle transitions + if(transitionOpts && transitionOpts.duration > 0) { + var transition = d3.transition() + .duration(transitionOpts.duration) + .ease(transitionOpts.easing); + + lineSegments.transition(transition) + .style('opacity', 1); + } +} diff --git a/src/traces/quiver/style.js b/src/traces/quiver/style.js new file mode 100644 index 00000000000..05e9843f097 --- /dev/null +++ b/src/traces/quiver/style.js @@ -0,0 +1,95 @@ +'use strict'; + +var d3 = require('@plotly/d3'); +var Lib = require('../../lib'); + +var Drawing = require('../../components/drawing'); +var Colorscale = require('../../components/colorscale'); +var DESELECTDIM = require('../../constants/interactions').DESELECTDIM; + +// Stroke each arrow path according to the trace colorscale, using marker.color +// when it is an array of scalar values, otherwise falling back to the vector +// magnitude |(u, v)|. `paths` may be a multi-path selection or a single path. +function colorscaleStroke(paths, trace) { + var marker = trace.marker || {}; + var colorFunc = Colorscale.makeColorScaleFuncFromTrace(marker); + + paths.style('stroke', function(cdi) { + var markerColor = marker.color; + var value; + if(Lib.isArrayOrTypedArray(markerColor) && markerColor.length > cdi.i && isFinite(markerColor[cdi.i])) { + value = markerColor[cdi.i]; + } else { + var uVal = (trace.u && trace.u[cdi.i]) || 0; + var vVal = (trace.v && trace.v[cdi.i]) || 0; + value = Math.sqrt(uVal * uVal + vVal * vVal); + } + return colorFunc(value); + }); +} + +function style(gd) { + var s = d3.select(gd).selectAll('g.trace.quiver'); + s.each(function(d) { + styleArrows(gd, d, d3.select(this)); + }); +} + +function styleOnSelect(gd, cd, sel) { + styleArrows(gd, cd, sel); +} + +function styleArrows(gd, cd, sel) { + var trace = cd[0].trace; + var marker = trace.marker || {}; + var markerLine = marker.line || {}; + var lineColor = Lib.isArrayOrTypedArray(marker.color) ? undefined : marker.color; + var hasColorscale = trace._hasColorscale; + + if(!sel) return; + + if(trace.selectedpoints) { + var selectedMarker = (trace.selected || {}).marker || {}; + var unselectedMarker = (trace.unselected || {}).marker || {}; + var selectedMarkerLine = selectedMarker.line || {}; + var unselectedMarkerLine = unselectedMarker.line || {}; + + sel.selectAll('path.js-line').each(function(d) { + var path = d3.select(this); + var dim = !d.selected; + + var explicitColor = dim ? unselectedMarker.color : selectedMarker.color; + var lineWidth = dim ? + (unselectedMarkerLine.width !== undefined ? unselectedMarkerLine.width : markerLine.width) : + (selectedMarkerLine.width !== undefined ? selectedMarkerLine.width : markerLine.width); + + if(explicitColor) { + Drawing.lineGroupStyle(path, lineWidth, explicitColor, markerLine.dash); + path.style('stroke-opacity', 1); + } else { + // Fall back to the arrow's own color (scalar marker.color, a + // marker.color array, or the colorscale). When marker.color is an + // array, lineColor is undefined and we cannot bake opacity into a + // color, so we keep each arrow's color and dim unselected arrows + // via stroke-opacity instead. + Drawing.lineGroupStyle(path, lineWidth, lineColor, markerLine.dash); + if(hasColorscale) colorscaleStroke(path, trace); + path.style('stroke-opacity', dim ? DESELECTDIM : 1); + } + }); + + Drawing.selectedTextStyle(sel.selectAll('text'), trace); + } else { + var paths = sel.selectAll('path.js-line'); + paths.call(Drawing.lineGroupStyle, markerLine.width, lineColor, markerLine.dash); + if(hasColorscale) colorscaleStroke(paths, trace); + paths.style('stroke-opacity', 1); + Drawing.textPointStyle(sel.selectAll('text'), trace, gd); + } +} + +module.exports = { + style: style, + styleOnSelect: styleOnSelect, + colorscaleStroke: colorscaleStroke +}; diff --git a/src/traces/sankey/defaults.js b/src/traces/sankey/defaults.js index d9ca15fea65..4f6eb92d1c4 100644 --- a/src/traces/sankey/defaults.js +++ b/src/traces/sankey/defaults.js @@ -3,7 +3,6 @@ var Lib = require('../../lib'); var attributes = require('./attributes'); var Color = require('../../components/color'); -var tinycolor = require('tinycolor2'); var handleDomainDefaults = require('../../plots/domain').defaults; var handleHoverLabelDefaults = require('../../components/fx/hoverlabel_defaults'); var Template = require('../../plot_api/plot_template'); @@ -38,11 +37,12 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout var colors = layout.colorway; - var defaultNodePalette = function(i) {return colors[i % colors.length];}; + const defaultNodePalette = (i) => colors[i % colors.length]; - coerceNode('color', nodeOut.label.map(function(d, i) { - return Color.addOpacity(defaultNodePalette(i), 0.8); - })); + coerceNode( + 'color', + nodeOut.label.map((d, i) => Color.addOpacity(defaultNodePalette(i), 0.8)) + ); coerceNode('customdata'); // link attributes @@ -63,28 +63,30 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleHoverLabelDefaults(linkIn, linkOut, coerceLink, hoverlabelDefault); coerceLink('hovertemplate'); - var darkBG = tinycolor(layout.paper_bgcolor).getLuminance() < 0.333; + var darkBG = Color.color(layout.paper_bgcolor).luminosity() < 0.333; var defaultLinkColor = darkBG ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.2)'; var linkColor = coerceLink('color', defaultLinkColor); function makeDefaultHoverColor(_linkColor) { - var tc = tinycolor(_linkColor); - if(!tc.isValid()) { - // hopefully the user-specified color is valid, but if not that can be caught elsewhere - return _linkColor; - } - var alpha = tc.getAlpha(); - if(alpha <= 0.8) { - tc.setAlpha(alpha + 0.2); + // hopefully the user-specified color is valid, but if not that can be caught elsewhere + if (!Color.isValid(_linkColor)) return _linkColor; + + const c = Color.color(_linkColor); + const alpha = c.alpha(); + + if (alpha <= 0.8) { + return c + .alpha(alpha + 0.2) + .rgb() + .string(); } else { - tc = darkBG ? tc.brighten() : tc.darken(); + return darkBG ? Color.brighten(c, 10) : Color.adjustLightness(c, -10).rgb().string(); } - return tc.toRgbString(); } - coerceLink('hovercolor', Array.isArray(linkColor) ? - linkColor.map(makeDefaultHoverColor) : - makeDefaultHoverColor(linkColor) + coerceLink( + 'hovercolor', + Array.isArray(linkColor) ? linkColor.map(makeDefaultHoverColor) : makeDefaultHoverColor(linkColor) ); coerceLink('customdata'); @@ -100,16 +102,12 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('valueformat'); coerce('valuesuffix'); - var dfltArrangement; - if(nodeOut.x.length && nodeOut.y.length) { - dfltArrangement = 'freeform'; - } + const dfltArrangement = nodeOut.x.length && nodeOut.y.length ? 'freeform' : undefined; coerce('arrangement', dfltArrangement); Lib.coerceFont(coerce, 'textfont', layout.font, { autoShadowDflt: true }); - // disable 1D transforms - arrays here are 1D but their lengths/meanings - // don't match, between nodes and links + // Ensure _length is defined traceOut._length = null; }; diff --git a/src/traces/sankey/plot.js b/src/traces/sankey/plot.js index 2ac7ec7206e..8b179c767cb 100644 --- a/src/traces/sankey/plot.js +++ b/src/traces/sankey/plot.js @@ -64,11 +64,11 @@ function nodeNonHoveredStyle(sankeyNode, d, sankey) { function linkHoveredStyle(d, sankey, visitNodes, sankeyLink) { sankeyLink.style('fill', function(l) { if(!l.link.concentrationscale) { - return l.tinyColorHoverHue; + return l.hoverRgb; } }).style('fill-opacity', function(l) { if(!l.link.concentrationscale) { - return l.tinyColorHoverAlpha; + return l.hoverAlpha; } }); @@ -80,11 +80,11 @@ function linkHoveredStyle(d, sankey, visitNodes, sankeyLink) { .filter(function(l) {return l.link.label === label;}) .style('fill', function(l) { if(!l.link.concentrationscale) { - return l.tinyColorHoverHue; + return l.hoverRgb; } }).style('fill-opacity', function(l) { if(!l.link.concentrationscale) { - return l.tinyColorHoverAlpha; + return l.hoverAlpha; } }); } @@ -100,9 +100,9 @@ function linkHoveredStyle(d, sankey, visitNodes, sankeyLink) { function linkNonHoveredStyle(d, sankey, visitNodes, sankeyLink) { sankeyLink.style('fill', function(l) { - return l.tinyColorHue; + return l.rgb; }).style('fill-opacity', function(l) { - return l.tinyColorAlpha; + return l.alpha; }); sankeyLink.each(function(curLink) { @@ -111,8 +111,8 @@ function linkNonHoveredStyle(d, sankey, visitNodes, sankeyLink) { ownTrace(sankey, d) .selectAll('.' + cn.sankeyLink) .filter(function(l) {return l.link.label === label;}) - .style('fill', function(l) {return l.tinyColorHue;}) - .style('fill-opacity', function(l) {return l.tinyColorAlpha;}); + .style('fill', l => l.rgb) + .style('fill-opacity', l => l.alpha); } }); @@ -321,7 +321,7 @@ module.exports = function plot(gd, calcData) { incomingLabel + d.node.targetLinks.length, outgoingLabel + d.node.sourceLinks.length ].filter(renderableValuePresent).join('
'), - color: castHoverOption(obj, 'bgcolor') || d.tinyColorHue, + color: castHoverOption(obj, 'bgcolor') || d.rgb, borderColor: castHoverOption(obj, 'bordercolor'), fontFamily: castHoverOption(obj, 'font.family'), fontSize: castHoverOption(obj, 'font.size'), diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index a07d18a9c9e..ab00a51223e 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -7,7 +7,6 @@ var d3Sankey = require('@plotly/d3-sankey'); var d3SankeyCircular = require('@plotly/d3-sankey-circular'); var c = require('./constants'); -var tinycolor = require('tinycolor2'); var Color = require('../../components/color'); var Drawing = require('../../components/drawing'); var Lib = require('../../lib'); @@ -151,7 +150,7 @@ function sankeyModel(layout, d, traceIndex) { links: flowLinks }; if(link.concentrationscale) { - link.color = tinycolor(link.concentrationscale(link.flow.labelConcentration)); + link.color = link.concentrationscale(link.flow.labelConcentration); } } } @@ -298,8 +297,6 @@ function sankeyModel(layout, d, traceIndex) { } function linkModel(d, l, i) { - var tc = tinycolor(l.color); - var htc = tinycolor(l.hovercolor); var basicKey = l.source.label + '|' + l.target.label; var key = basicKey + '__' + i; @@ -313,10 +310,10 @@ function linkModel(d, l, i) { traceId: d.key, pointNumber: l.pointNumber, link: l, - tinyColorHue: Color.tinyRGB(tc), - tinyColorAlpha: tc.getAlpha(), - tinyColorHoverHue: Color.tinyRGB(htc), - tinyColorHoverAlpha: htc.getAlpha(), + rgb: Color.rgb(l.color), + alpha: Color.color(l.color).alpha(), + hoverRgb: Color.rgb(l.hovercolor), + hoverAlpha: Color.color(l.hovercolor).alpha(), linkPath: linkPath, linkLineColor: d.linkLineColor, linkLineWidth: d.linkLineWidth, @@ -535,7 +532,6 @@ function linkPath() { } function nodeModel(d, n) { - var tc = tinycolor(n.color); var zoneThicknessPad = c.nodePadAcross; var zoneLengthPad = d.nodePad / 2; n.dx = n.x1 - n.x0; @@ -577,9 +573,9 @@ function nodeModel(d, n) { sizeAcross: d.width, forceLayouts: d.forceLayouts, horizontal: d.horizontal, - darkBackground: tc.getBrightness() <= 128, - tinyColorHue: Color.tinyRGB(tc), - tinyColorAlpha: tc.getAlpha(), + darkBackground: Color.color(n.color).isDark(), + rgb: Color.rgb(n.color), + alpha: Color.color(n.color).alpha(), valueFormat: d.valueFormat, valueSuffix: d.valueSuffix, sankey: d.sankey, @@ -937,21 +933,11 @@ module.exports = function(gd, svg, calcData, layout, callbacks) { .call(attachPointerEvents, sankey, callbacks.linkEvents); sankeyLink - .style('stroke', function(d) { - return salientEnough(d) ? Color.tinyRGB(tinycolor(d.linkLineColor)) : d.tinyColorHue; - }) - .style('stroke-opacity', function(d) { - return salientEnough(d) ? Color.opacity(d.linkLineColor) : d.tinyColorAlpha; - }) - .style('fill', function(d) { - return d.tinyColorHue; - }) - .style('fill-opacity', function(d) { - return d.tinyColorAlpha; - }) - .style('stroke-width', function(d) { - return salientEnough(d) ? d.linkLineWidth : 1; - }) + .style('stroke', d => salientEnough(d) ? Color.rgb(d.linkLineColor) : d.rgb) + .style('stroke-opacity', d => salientEnough(d) ? Color.opacity(d.linkLineColor) : d.alpha) + .style('fill', d => d.rgb) + .style('fill-opacity', d => d.alpha) + .style('stroke-width', d => salientEnough(d) ? d.linkLineWidth : 1) .attr('d', linkPath()); sankeyLink @@ -1022,10 +1008,10 @@ module.exports = function(gd, svg, calcData, layout, callbacks) { nodeRect .style('stroke-width', function(d) {return d.nodeLineWidth;}) - .style('stroke', function(d) {return Color.tinyRGB(tinycolor(d.nodeLineColor));}) + .style('stroke', function(d) {return Color.rgb(d.nodeLineColor);}) .style('stroke-opacity', function(d) {return Color.opacity(d.nodeLineColor);}) - .style('fill', function(d) {return d.tinyColorHue;}) - .style('fill-opacity', function(d) {return d.tinyColorAlpha;}); + .style('fill', d => d.rgb) + .style('fill-opacity', d => d.alpha); nodeRect.transition() .ease(c.ease).duration(c.duration) diff --git a/src/traces/scatter/select.js b/src/traces/scatter/select.js index 01f757a779e..c4c4c3479cc 100644 --- a/src/traces/scatter/select.js +++ b/src/traces/scatter/select.js @@ -13,7 +13,7 @@ module.exports = function selectPoints(searchInfo, selectionTester) { var x; var y; - var hasOnlyLines = (!subtypes.hasMarkers(trace) && !subtypes.hasText(trace)); + var hasOnlyLines = trace.mode && !subtypes.hasMarkers(trace) && !subtypes.hasText(trace); if(hasOnlyLines) return []; if(selectionTester === false) { // clear selection diff --git a/src/traces/scatter/stack_defaults.js b/src/traces/scatter/stack_defaults.js index 91c02c9c7d5..4f20b708662 100644 --- a/src/traces/scatter/stack_defaults.js +++ b/src/traces/scatter/stack_defaults.js @@ -33,10 +33,6 @@ module.exports = function handleStackDefaults(traceIn, traceOut, layout, coerce) }; firstTrace = true; } - // TODO: how is this going to work with groupby transforms? - // in principle it should be OK I guess, as long as explicit group styles - // don't override explicit base-trace styles? - var dflts = { orientation: (traceOut.x && !traceOut.y) ? 'h' : 'v' }; diff --git a/src/traces/scatter3d/attributes.js b/src/traces/scatter3d/attributes.js index 17023178d28..12998d8cfd2 100644 --- a/src/traces/scatter3d/attributes.js +++ b/src/traces/scatter3d/attributes.js @@ -11,7 +11,7 @@ var DASHES = require('../../constants/gl3d_dashes'); var MARKER_SYMBOLS = require('../../constants/gl3d_markers'); var extendFlat = require('../../lib/extend').extendFlat; var overrideAll = require('../../plot_api/edit_types').overrideAll; -var sortObjectKeys = require('../../lib/sort_object_keys'); +var sortObjectKeys = require('../../lib/sort_object_keys').default; var scatterLineAttrs = scatterAttrs.line; var scatterMarkerAttrs = scatterAttrs.marker; diff --git a/src/traces/scattercarpet/attributes.js b/src/traces/scattercarpet/attributes.js index ded94305d8a..e5ea51d82cd 100644 --- a/src/traces/scattercarpet/attributes.js +++ b/src/traces/scattercarpet/attributes.js @@ -38,7 +38,7 @@ module.exports = { 'Sets text elements associated with each (a,b) point.', 'If a single string, the same string appears over', 'all the data points.', - 'If an array of strings, the items are mapped in order to the', + 'If an array of strings, the items are mapped in order to', 'the data points in (a,b).', 'If trace `hoverinfo` contains a *text* flag and *hovertext* is not set,', 'these elements will be seen in the hover labels.' @@ -51,7 +51,7 @@ module.exports = { 'Sets hover text elements associated with each (a,b) point.', 'If a single string, the same string appears over', 'all the data points.', - 'If an array of strings, the items are mapped in order to the', + 'If an array of strings, the items are mapped in order to', 'the data points in (a,b).', 'To be seen, trace `hoverinfo` must contain a *text* flag.' ].join(' ') diff --git a/src/traces/scattergeo/attributes.js b/src/traces/scattergeo/attributes.js index 9059261f671..1aeddeb5474 100644 --- a/src/traces/scattergeo/attributes.js +++ b/src/traces/scattergeo/attributes.js @@ -14,11 +14,6 @@ var scatterMarkerAttrs = scatterAttrs.marker; var scatterLineAttrs = scatterAttrs.line; var scatterMarkerLineAttrs = scatterMarkerAttrs.line; -const breakingChangeWarning = [ - 'The library used by the *country names* `locationmode` option is changing in an upcoming version.', - 'Country names in existing plots may not work in the new version.' -].join(' '); - module.exports = overrideAll( { lon: { @@ -43,7 +38,6 @@ module.exports = overrideAll( values: ['ISO-3', 'USA-states', 'country names', 'geojson-id'], dflt: 'ISO-3', description: [ - breakingChangeWarning, 'Determines the set of locations used to match entries in `locations`', 'to regions on the map.', 'Values *ISO-3*, *USA-states*, *country names* correspond to features on', diff --git a/src/traces/scattergeo/defaults.js b/src/traces/scattergeo/defaults.js index 88e20a17ff7..32629884b8a 100644 --- a/src/traces/scattergeo/defaults.js +++ b/src/traces/scattergeo/defaults.js @@ -10,12 +10,6 @@ var handleFillColorDefaults = require('../scatter/fillcolor_defaults'); var attributes = require('./attributes'); -const locationmodeBreakingChangeWarning = [ - 'The library used by the *country names* `locationmode` option is changing in the next major version.', - 'Some country names in existing plots may not work in the new version.', - 'To ensure consistent behavior, consider setting `locationmode` to *ISO-3*.' -].join(' '); - module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { function coerce(attr, dflt) { return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); @@ -33,10 +27,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout var locationMode = coerce('locationmode', locationmodeDflt); - if (locationMode === 'country names') { - Lib.warn(locationmodeBreakingChangeWarning); - } - if (locationMode === 'geojson-id') { coerce('featureidkey'); } diff --git a/src/traces/scattergl/attributes.js b/src/traces/scattergl/attributes.js index 8f05e9f5cc4..59188554c52 100644 --- a/src/traces/scattergl/attributes.js +++ b/src/traces/scattergl/attributes.js @@ -7,7 +7,7 @@ var scatterAttrs = require('../scatter/attributes'); var axisHoverFormat = require('../../plots/cartesian/axis_format_attributes').axisHoverFormat; var colorScaleAttrs = require('../../components/colorscale/attributes'); -var sortObjectKeys = require('../../lib/sort_object_keys'); +var sortObjectKeys = require('../../lib/sort_object_keys').default; var extendFlat = require('../../lib/extend').extendFlat; var overrideAll = require('../../plot_api/edit_types').overrideAll; var DASHES = require('./constants').DASHES; diff --git a/src/traces/scattergl/plot.js b/src/traces/scattergl/plot.js index 9fd954fe5d4..19d944ab376 100644 --- a/src/traces/scattergl/plot.js +++ b/src/traces/scattergl/plot.js @@ -280,7 +280,7 @@ var exports = module.exports = function plot(gd, subplot, cdata) { // regenerate scene batch, if traces number changed during selection if(trace.selectedpoints) { - var selPts = scene.selectBatch[index] = Lib.selIndices2selPoints(trace); + var selPts = scene.selectBatch[index] = trace.selectedpoints; var selDict = {}; for(j = 0; j < selPts.length; j++) { diff --git a/src/traces/scattermap/convert.js b/src/traces/scattermap/convert.js index c2bfce0c56d..a4c35683809 100644 --- a/src/traces/scattermap/convert.js +++ b/src/traces/scattermap/convert.js @@ -116,7 +116,7 @@ module.exports = function convert(gd, calcTrace) { Lib.extendFlat(symbol.layout, { visibility: 'visible', - 'icon-image': '{symbol}-15', + 'icon-image': '{symbol}', 'text-field': '{text}' }); @@ -141,9 +141,11 @@ module.exports = function convert(gd, calcTrace) { Lib.extendFlat(symbol.paint, { 'icon-opacity': trace.opacity * trace.marker.opacity, - - // TODO does not work ?? - 'icon-color': trace.marker.color + 'icon-color': trace.marker.color, + // Set a tiny blur to make the edges look nicer + 'icon-halo-color': trace.marker.color, + 'icon-halo-width': 2, + 'icon-halo-blur': 1.5, }); } diff --git a/src/traces/scatterternary/attributes.js b/src/traces/scatterternary/attributes.js index c51c1abdfbb..315c04c4144 100644 --- a/src/traces/scatterternary/attributes.js +++ b/src/traces/scatterternary/attributes.js @@ -66,7 +66,7 @@ module.exports = { 'Sets text elements associated with each (a,b,c) point.', 'If a single string, the same string appears over', 'all the data points.', - 'If an array of strings, the items are mapped in order to the', + 'If an array of strings, the items are mapped in order to', 'the data points in (a,b,c).', 'If trace `hoverinfo` contains a *text* flag and *hovertext* is not set,', 'these elements will be seen in the hover labels.' @@ -79,7 +79,7 @@ module.exports = { 'Sets hover text elements associated with each (a,b,c) point.', 'If a single string, the same string appears over', 'all the data points.', - 'If an array of strings, the items are mapped in order to the', + 'If an array of strings, the items are mapped in order to', 'the data points in (a,b,c).', 'To be seen, trace `hoverinfo` must contain a *text* flag.' ].join(' ') diff --git a/src/traces/splom/attributes.js b/src/traces/splom/attributes.js index 679337b30bd..b8eadcad9f4 100644 --- a/src/traces/splom/attributes.js +++ b/src/traces/splom/attributes.js @@ -90,10 +90,9 @@ module.exports = { ].join(' ') }, - // TODO make 'true' the default in v3? matches: { valType: 'boolean', - dflt: false, + dflt: true, editType: 'calc', description: [ 'Determines whether or not the x & y axes generated by this', diff --git a/src/traces/streamtube/defaults.js b/src/traces/streamtube/defaults.js index f49de256e21..43d42456793 100644 --- a/src/traces/streamtube/defaults.js +++ b/src/traces/streamtube/defaults.js @@ -65,8 +65,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('yhoverformat'); coerce('zhoverformat'); - // disable 1D transforms (for now) - // x/y/z and u/v/w have matching lengths, - // but they don't have to match with starts.(x|y|z) + // Ensure _length is defined traceOut._length = null; }; diff --git a/src/traces/sunburst/defaults.js b/src/traces/sunburst/defaults.js index 2439c817df6..828519633a6 100644 --- a/src/traces/sunburst/defaults.js +++ b/src/traces/sunburst/defaults.js @@ -72,6 +72,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleDomainDefaults(traceOut, layout, coerce); - // do not support transforms for now + // Ensure _length is defined traceOut._length = null; }; diff --git a/src/traces/surface/defaults.js b/src/traces/surface/defaults.js index 9da3b2e3d26..d86ba81d5e6 100644 --- a/src/traces/surface/defaults.js +++ b/src/traces/surface/defaults.js @@ -125,8 +125,7 @@ function supplyDefaults(traceIn, traceOut, defaultColor, layout) { opacityscaleDefaults(traceIn, traceOut, layout, coerce); - // disable 1D transforms - currently surface does NOT support column data like heatmap does - // you can use mesh3d for this use case, but not surface + // Ensure _length is defined traceOut._length = null; } diff --git a/src/traces/table/data_preparation_helper.js b/src/traces/table/data_preparation_helper.js index fb737366dd3..84035df22fe 100644 --- a/src/traces/table/data_preparation_helper.js +++ b/src/traces/table/data_preparation_helper.js @@ -38,7 +38,7 @@ module.exports = function calc(gd, trace) { var rowBlocks = makeRowBlock(anchorToRowBlock, headerRowBlocks); var uniqueKeys = {}; - var columnOrder = trace._fullInput.columnorder; + var columnOrder = trace.columnorder; if(isArrayOrTypedArray(columnOrder)) columnOrder = Array.from(columnOrder); columnOrder = columnOrder.concat(slicer(cellsValues.map(function(d, i) {return i;}))); diff --git a/src/traces/table/defaults.js b/src/traces/table/defaults.js index 45bfb8d74bb..bae59413204 100644 --- a/src/traces/table/defaults.js +++ b/src/traces/table/defaults.js @@ -50,6 +50,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('cells.fill.color'); Lib.coerceFont(coerce, 'cells.font', layout.font); - // disable 1D transforms + // Ensure _length is defined traceOut._length = null; }; diff --git a/src/traces/treemap/attributes.js b/src/traces/treemap/attributes.js index 8beb2f409c0..b076242b36c 100644 --- a/src/traces/treemap/attributes.js +++ b/src/traces/treemap/attributes.js @@ -155,7 +155,7 @@ module.exports = { values: ['top', 'bottom'], dflt: 'top', editType: 'plot', - description: ['Determines on which side of the the treemap the', '`pathbar` should be presented.'].join(' ') + description: ['Determines on which side of the treemap the', '`pathbar` should be presented.'].join(' ') }, edgeshape: { diff --git a/src/traces/treemap/defaults.js b/src/traces/treemap/defaults.js index b877b34bedd..e6c71547fa5 100644 --- a/src/traces/treemap/defaults.js +++ b/src/traces/treemap/defaults.js @@ -108,6 +108,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleDomainDefaults(traceOut, layout, coerce); - // do not support transforms for now + // Ensure _length is defined traceOut._length = null; }; diff --git a/src/traces/violin/attributes.js b/src/traces/violin/attributes.js index fc1e1f35fb7..d0acc3e8af7 100644 --- a/src/traces/violin/attributes.js +++ b/src/traces/violin/attributes.js @@ -47,7 +47,7 @@ module.exports = { dflt: '', editType: 'calc', description: [ - 'If there are multiple violins that should be sized according to', + 'If there are multiple violins that should be sized according', 'to some metric (see `scalemode`), link them by providing a non-empty group id here', 'shared by every trace in the same group.', "If a violin's `width` is undefined, `scalegroup` will default to the trace's name.", diff --git a/src/traces/violin/index.js b/src/traces/violin/index.js index 93661d7d56b..85df000b88e 100644 --- a/src/traces/violin/index.js +++ b/src/traces/violin/index.js @@ -25,7 +25,7 @@ module.exports = { 'By supplying an `x` (`y`) array, one violin per distinct x (y) value', 'is drawn', 'If no `x` (`y`) {array} is provided, a single violin is drawn.', - 'That violin position is then positioned with', + 'That violin position is then positioned', 'with `name` or with `x0` (`y0`) if provided.' ].join(' ') } diff --git a/src/transforms/aggregate.js b/src/transforms/aggregate.js deleted file mode 100644 index eed6a937978..00000000000 --- a/src/transforms/aggregate.js +++ /dev/null @@ -1,450 +0,0 @@ -'use strict'; - -var Axes = require('../plots/cartesian/axes'); -var Lib = require('../lib'); -var PlotSchema = require('../plot_api/plot_schema'); -var pointsAccessorFunction = require('./helpers').pointsAccessorFunction; -var BADNUM = require('../constants/numerical').BADNUM; - -exports.moduleType = 'transform'; - -exports.name = 'aggregate'; - -var attrs = exports.attributes = { - enabled: { - valType: 'boolean', - dflt: true, - editType: 'calc', - description: [ - 'Determines whether this aggregate transform is enabled or disabled.' - ].join(' ') - }, - groups: { - // TODO: groupby should support string or array grouping this way too - // currently groupby only allows a grouping array - valType: 'string', - strict: true, - noBlank: true, - arrayOk: true, - dflt: 'x', - editType: 'calc', - description: [ - 'Sets the grouping target to which the aggregation is applied.', - 'Data points with matching group values will be coalesced into', - 'one point, using the supplied aggregation functions to reduce data', - 'in other data arrays.', - 'If a string, `groups` is assumed to be a reference to a data array', - 'in the parent trace object.', - 'To aggregate by nested variables, use *.* to access them.', - 'For example, set `groups` to *marker.color* to aggregate', - 'about the marker color array.', - 'If an array, `groups` is itself the data array by which we aggregate.' - ].join(' ') - }, - aggregations: { - _isLinkedToArray: 'aggregation', - target: { - valType: 'string', - editType: 'calc', - description: [ - 'A reference to the data array in the parent trace to aggregate.', - 'To aggregate by nested variables, use *.* to access them.', - 'For example, set `groups` to *marker.color* to aggregate', - 'over the marker color array.', - 'The referenced array must already exist, unless `func` is *count*,', - 'and each array may only be referenced once.' - ].join(' ') - }, - func: { - valType: 'enumerated', - values: ['count', 'sum', 'avg', 'median', 'mode', 'rms', 'stddev', 'min', 'max', 'first', 'last', 'change', 'range'], - dflt: 'first', - editType: 'calc', - description: [ - 'Sets the aggregation function.', - 'All values from the linked `target`, corresponding to the same value', - 'in the `groups` array, are collected and reduced by this function.', - '*count* is simply the number of values in the `groups` array, so does', - 'not even require the linked array to exist. *first* (*last*) is just', - 'the first (last) linked value.', - 'Invalid values are ignored, so for example in *avg* they do not', - 'contribute to either the numerator or the denominator.', - 'Any data type (numeric, date, category) may be aggregated with any', - 'function, even though in certain cases it is unlikely to make sense,', - 'for example a sum of dates or average of categories.', - '*median* will return the average of the two central values if there is', - 'an even count. *mode* will return the first value to reach the maximum', - 'count, in case of a tie.', - '*change* will return the difference between the first and last linked values.', - '*range* will return the difference between the min and max linked values.' - ].join(' ') - }, - funcmode: { - valType: 'enumerated', - values: ['sample', 'population'], - dflt: 'sample', - editType: 'calc', - description: [ - '*stddev* supports two formula variants: *sample* (normalize by N-1)', - 'and *population* (normalize by N).' - ].join(' ') - }, - enabled: { - valType: 'boolean', - dflt: true, - editType: 'calc', - description: [ - 'Determines whether this aggregation function is enabled or disabled.' - ].join(' ') - }, - editType: 'calc' - }, - editType: 'calc' -}; - -var aggAttrs = attrs.aggregations; - -/** - * Supply transform attributes defaults - * - * @param {object} transformIn - * object linked to trace.transforms[i] with 'func' set to exports.name - * @param {object} traceOut - * the _fullData trace this transform applies to - * @param {object} layout - * the plot's (not-so-full) layout - * @param {object} traceIn - * the input data trace this transform applies to - * - * @return {object} transformOut - * copy of transformIn that contains attribute defaults - */ -exports.supplyDefaults = function(transformIn, traceOut) { - var transformOut = {}; - var i; - - function coerce(attr, dflt) { - return Lib.coerce(transformIn, transformOut, attrs, attr, dflt); - } - - var enabled = coerce('enabled'); - - if(!enabled) return transformOut; - - /* - * Normally _arrayAttrs is calculated during doCalc, but that comes later. - * Anyway this can change due to *count* aggregations (see below) so it's not - * necessarily the same set. - * - * For performance we turn it into an object of truthy values - * we'll use 1 for arrays we haven't aggregated yet, 0 for finished arrays, - * as distinct from undefined which means this array isn't present in the input - * missing arrays can still be aggregate outputs for *count* aggregations. - */ - var arrayAttrArray = PlotSchema.findArrayAttributes(traceOut); - var arrayAttrs = {}; - for(i = 0; i < arrayAttrArray.length; i++) arrayAttrs[arrayAttrArray[i]] = 1; - - var groups = coerce('groups'); - - if(!Array.isArray(groups)) { - if(!arrayAttrs[groups]) { - transformOut.enabled = false; - return transformOut; - } - arrayAttrs[groups] = 0; - } - - var aggregationsIn = transformIn.aggregations || []; - var aggregationsOut = transformOut.aggregations = new Array(aggregationsIn.length); - var aggregationOut; - - function coercei(attr, dflt) { - return Lib.coerce(aggregationsIn[i], aggregationOut, aggAttrs, attr, dflt); - } - - for(i = 0; i < aggregationsIn.length; i++) { - aggregationOut = {_index: i}; - var target = coercei('target'); - var func = coercei('func'); - var enabledi = coercei('enabled'); - - // add this aggregation to the output only if it's the first instance - // of a valid target attribute - or an unused target attribute with "count" - if(enabledi && target && (arrayAttrs[target] || (func === 'count' && arrayAttrs[target] === undefined))) { - if(func === 'stddev') coercei('funcmode'); - - arrayAttrs[target] = 0; - aggregationsOut[i] = aggregationOut; - } else aggregationsOut[i] = {enabled: false, _index: i}; - } - - // any array attributes we haven't yet covered, fill them with the default aggregation - for(i = 0; i < arrayAttrArray.length; i++) { - if(arrayAttrs[arrayAttrArray[i]]) { - aggregationsOut.push({ - target: arrayAttrArray[i], - func: aggAttrs.func.dflt, - enabled: true, - _index: -1 - }); - } - } - - return transformOut; -}; - - -exports.calcTransform = function(gd, trace, opts) { - if(!opts.enabled) return; - - var groups = opts.groups; - - var groupArray = Lib.getTargetArray(trace, {target: groups}); - if(!groupArray) return; - - var i, vi, groupIndex, newGrouping; - - var groupIndices = {}; - var indexToPoints = {}; - var groupings = []; - - var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); - - var len = groupArray.length; - if(trace._length) len = Math.min(len, trace._length); - - for(i = 0; i < len; i++) { - vi = groupArray[i]; - groupIndex = groupIndices[vi]; - if(groupIndex === undefined) { - groupIndices[vi] = groupings.length; - newGrouping = [i]; - groupings.push(newGrouping); - indexToPoints[groupIndices[vi]] = originalPointsAccessor(i); - } else { - groupings[groupIndex].push(i); - indexToPoints[groupIndices[vi]] = (indexToPoints[groupIndices[vi]] || []).concat(originalPointsAccessor(i)); - } - } - - opts._indexToPoints = indexToPoints; - - var aggregations = opts.aggregations; - - for(i = 0; i < aggregations.length; i++) { - aggregateOneArray(gd, trace, groupings, aggregations[i]); - } - - if(typeof groups === 'string') { - aggregateOneArray(gd, trace, groupings, { - target: groups, - func: 'first', - enabled: true - }); - } - - trace._length = groupings.length; -}; - -function aggregateOneArray(gd, trace, groupings, aggregation) { - if(!aggregation.enabled) return; - - var attr = aggregation.target; - var targetNP = Lib.nestedProperty(trace, attr); - var arrayIn = targetNP.get(); - var conversions = Axes.getDataConversions(gd, trace, attr, arrayIn); - var func = getAggregateFunction(aggregation, conversions); - - var arrayOut = new Array(groupings.length); - for(var i = 0; i < groupings.length; i++) { - arrayOut[i] = func(arrayIn, groupings[i]); - } - targetNP.set(arrayOut); - - if(aggregation.func === 'count') { - // count does not depend on an input array, so it's likely not part of _arrayAttrs yet - // but after this transform it most definitely *is* an array attribute. - Lib.pushUnique(trace._arrayAttrs, attr); - } -} - -function getAggregateFunction(opts, conversions) { - var func = opts.func; - var d2c = conversions.d2c; - var c2d = conversions.c2d; - - switch(func) { - // count, first, and last don't depend on anything about the data - // point back to pure functions for performance - case 'count': - return count; - case 'first': - return first; - case 'last': - return last; - - case 'sum': - // This will produce output in all cases even though it's nonsensical - // for date or category data. - return function(array, indices) { - var total = 0; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) total += vi; - } - return c2d(total); - }; - - case 'avg': - // Generally meaningless for category data but it still does something. - return function(array, indices) { - var total = 0; - var cnt = 0; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) { - total += vi; - cnt++; - } - } - return cnt ? c2d(total / cnt) : BADNUM; - }; - - case 'min': - return function(array, indices) { - var out = Infinity; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) out = Math.min(out, vi); - } - return (out === Infinity) ? BADNUM : c2d(out); - }; - - case 'max': - return function(array, indices) { - var out = -Infinity; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) out = Math.max(out, vi); - } - return (out === -Infinity) ? BADNUM : c2d(out); - }; - - case 'range': - return function(array, indices) { - var min = Infinity; - var max = -Infinity; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) { - min = Math.min(min, vi); - max = Math.max(max, vi); - } - } - return (max === -Infinity || min === Infinity) ? BADNUM : c2d(max - min); - }; - - case 'change': - return function(array, indices) { - var first = d2c(array[indices[0]]); - var last = d2c(array[indices[indices.length - 1]]); - return (first === BADNUM || last === BADNUM) ? BADNUM : c2d(last - first); - }; - - case 'median': - return function(array, indices) { - var sortCalc = []; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) sortCalc.push(vi); - } - if(!sortCalc.length) return BADNUM; - sortCalc.sort(Lib.sorterAsc); - var mid = (sortCalc.length - 1) / 2; - return c2d((sortCalc[Math.floor(mid)] + sortCalc[Math.ceil(mid)]) / 2); - }; - - case 'mode': - return function(array, indices) { - var counts = {}; - var maxCnt = 0; - var out = BADNUM; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) { - var counti = counts[vi] = (counts[vi] || 0) + 1; - if(counti > maxCnt) { - maxCnt = counti; - out = vi; - } - } - } - return maxCnt ? c2d(out) : BADNUM; - }; - - case 'rms': - return function(array, indices) { - var total = 0; - var cnt = 0; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) { - total += vi * vi; - cnt++; - } - } - return cnt ? c2d(Math.sqrt(total / cnt)) : BADNUM; - }; - - case 'stddev': - return function(array, indices) { - // balance numerical stability with performance: - // so that we call d2c once per element but don't need to - // store them, reference all to the first element - var total = 0; - var total2 = 0; - var cnt = 1; - var v0 = BADNUM; - var i; - for(i = 0; i < indices.length && v0 === BADNUM; i++) { - v0 = d2c(array[indices[i]]); - } - if(v0 === BADNUM) return BADNUM; - - for(; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) { - var dv = vi - v0; - total += dv; - total2 += dv * dv; - cnt++; - } - } - - // This is population std dev, if we want sample std dev - // we would need (...) / (cnt - 1) - // Also note there's no c2d here - that means for dates the result - // is a number of milliseconds, and for categories it's a number - // of category differences, which is not generically meaningful but - // as in other cases we don't forbid it. - var norm = (opts.funcmode === 'sample') ? (cnt - 1) : cnt; - // this is debatable: should a count of 1 return sample stddev of - // 0 or undefined? - if(!norm) return 0; - return Math.sqrt((total2 - (total * total / cnt)) / norm); - }; - } -} - -function count(array, indices) { - return indices.length; -} - -function first(array, indices) { - return array[indices[0]]; -} - -function last(array, indices) { - return array[indices[indices.length - 1]]; -} diff --git a/src/transforms/filter.js b/src/transforms/filter.js deleted file mode 100644 index 6a05527db34..00000000000 --- a/src/transforms/filter.js +++ /dev/null @@ -1,323 +0,0 @@ -'use strict'; - -var Lib = require('../lib'); -var Registry = require('../registry'); -var Axes = require('../plots/cartesian/axes'); -var pointsAccessorFunction = require('./helpers').pointsAccessorFunction; - -var filterOps = require('../constants/filter_ops'); -var COMPARISON_OPS = filterOps.COMPARISON_OPS; -var INTERVAL_OPS = filterOps.INTERVAL_OPS; -var SET_OPS = filterOps.SET_OPS; - -exports.moduleType = 'transform'; - -exports.name = 'filter'; - -exports.attributes = { - enabled: { - valType: 'boolean', - dflt: true, - editType: 'calc', - description: [ - 'Determines whether this filter transform is enabled or disabled.' - ].join(' ') - }, - target: { - valType: 'string', - strict: true, - noBlank: true, - arrayOk: true, - dflt: 'x', - editType: 'calc', - description: [ - 'Sets the filter target by which the filter is applied.', - - 'If a string, `target` is assumed to be a reference to a data array', - 'in the parent trace object.', - 'To filter about nested variables, use *.* to access them.', - 'For example, set `target` to *marker.color* to filter', - 'about the marker color array.', - - 'If an array, `target` is then the data array by which the filter is applied.' - ].join(' ') - }, - operation: { - valType: 'enumerated', - values: [] - .concat(COMPARISON_OPS) - .concat(INTERVAL_OPS) - .concat(SET_OPS), - dflt: '=', - editType: 'calc', - description: [ - 'Sets the filter operation.', - - '*=* keeps items equal to `value`', - '*!=* keeps items not equal to `value`', - - '*<* keeps items less than `value`', - '*<=* keeps items less than or equal to `value`', - - '*>* keeps items greater than `value`', - '*>=* keeps items greater than or equal to `value`', - - '*[]* keeps items inside `value[0]` to `value[1]` including both bounds', - '*()* keeps items inside `value[0]` to `value[1]` excluding both bounds', - '*[)* keeps items inside `value[0]` to `value[1]` including `value[0]` but excluding `value[1]', - '*(]* keeps items inside `value[0]` to `value[1]` excluding `value[0]` but including `value[1]', - - '*][* keeps items outside `value[0]` to `value[1]` and equal to both bounds', - '*)(* keeps items outside `value[0]` to `value[1]`', - '*](* keeps items outside `value[0]` to `value[1]` and equal to `value[0]`', - '*)[* keeps items outside `value[0]` to `value[1]` and equal to `value[1]`', - - '*{}* keeps items present in a set of values', - '*}{* keeps items not present in a set of values' - ].join(' ') - }, - value: { - valType: 'any', - dflt: 0, - editType: 'calc', - description: [ - 'Sets the value or values by which to filter.', - - 'Values are expected to be in the same type as the data linked', - 'to `target`.', - - 'When `operation` is set to one of', - 'the comparison values (' + COMPARISON_OPS + ')', - '`value` is expected to be a number or a string.', - - 'When `operation` is set to one of the interval values', - '(' + INTERVAL_OPS + ')', - '`value` is expected to be 2-item array where the first item', - 'is the lower bound and the second item is the upper bound.', - - 'When `operation`, is set to one of the set values', - '(' + SET_OPS + ')', - '`value` is expected to be an array with as many items as', - 'the desired set elements.' - ].join(' ') - }, - preservegaps: { - valType: 'boolean', - dflt: false, - editType: 'calc', - description: [ - 'Determines whether or not gaps in data arrays produced by the filter operation', - 'are preserved.', - 'Setting this to *true* might be useful when plotting a line chart', - 'with `connectgaps` set to *false*.' - ].join(' ') - }, - editType: 'calc' -}; - -exports.supplyDefaults = function(transformIn) { - var transformOut = {}; - - function coerce(attr, dflt) { - return Lib.coerce(transformIn, transformOut, exports.attributes, attr, dflt); - } - - var enabled = coerce('enabled'); - - if(enabled) { - var target = coerce('target'); - - if(Lib.isArrayOrTypedArray(target) && target.length === 0) { - transformOut.enabled = false; - return transformOut; - } - - coerce('preservegaps'); - coerce('operation'); - coerce('value'); - - var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleDefaults'); - handleCalendarDefaults(transformIn, transformOut, 'valuecalendar', null); - handleCalendarDefaults(transformIn, transformOut, 'targetcalendar', null); - } - - return transformOut; -}; - -exports.calcTransform = function(gd, trace, opts) { - if(!opts.enabled) return; - - var targetArray = Lib.getTargetArray(trace, opts); - if(!targetArray) return; - - var target = opts.target; - - var len = targetArray.length; - if(trace._length) len = Math.min(len, trace._length); - - var targetCalendar = opts.targetcalendar; - var arrayAttrs = trace._arrayAttrs; - var preservegaps = opts.preservegaps; - - // even if you provide targetcalendar, if target is a string and there - // is a calendar attribute matching target it will get used instead. - if(typeof target === 'string') { - var attrTargetCalendar = Lib.nestedProperty(trace, target + 'calendar').get(); - if(attrTargetCalendar) targetCalendar = attrTargetCalendar; - } - - var d2c = Axes.getDataToCoordFunc(gd, trace, target, targetArray); - var filterFunc = getFilterFunc(opts, d2c, targetCalendar); - var originalArrays = {}; - var indexToPoints = {}; - var index = 0; - - function forAllAttrs(fn, index) { - for(var j = 0; j < arrayAttrs.length; j++) { - var np = Lib.nestedProperty(trace, arrayAttrs[j]); - fn(np, index); - } - } - - var initFn; - var fillFn; - if(preservegaps) { - initFn = function(np) { - originalArrays[np.astr] = Lib.extendDeep([], np.get()); - np.set(new Array(len)); - }; - fillFn = function(np, index) { - var val = originalArrays[np.astr][index]; - np.get()[index] = val; - }; - } else { - initFn = function(np) { - originalArrays[np.astr] = Lib.extendDeep([], np.get()); - np.set([]); - }; - fillFn = function(np, index) { - var val = originalArrays[np.astr][index]; - np.get().push(val); - }; - } - - // copy all original array attribute values, and clear arrays in trace - forAllAttrs(initFn); - - var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); - - // loop through filter array, fill trace arrays if passed - for(var i = 0; i < len; i++) { - var passed = filterFunc(targetArray[i]); - if(passed) { - forAllAttrs(fillFn, i); - indexToPoints[index++] = originalPointsAccessor(i); - } else if(preservegaps) index++; - } - - opts._indexToPoints = indexToPoints; - trace._length = index; -}; - -function getFilterFunc(opts, d2c, targetCalendar) { - var operation = opts.operation; - var value = opts.value; - var hasArrayValue = Lib.isArrayOrTypedArray(value); - - function isOperationIn(array) { - return array.indexOf(operation) !== -1; - } - - var d2cValue = function(v) { return d2c(v, 0, opts.valuecalendar); }; - var d2cTarget = function(v) { return d2c(v, 0, targetCalendar); }; - - var coercedValue; - - if(isOperationIn(COMPARISON_OPS)) { - coercedValue = hasArrayValue ? d2cValue(value[0]) : d2cValue(value); - } else if(isOperationIn(INTERVAL_OPS)) { - coercedValue = hasArrayValue ? - [d2cValue(value[0]), d2cValue(value[1])] : - [d2cValue(value), d2cValue(value)]; - } else if(isOperationIn(SET_OPS)) { - coercedValue = hasArrayValue ? value.map(d2cValue) : [d2cValue(value)]; - } - - switch(operation) { - case '=': - return function(v) { return d2cTarget(v) === coercedValue; }; - - case '!=': - return function(v) { return d2cTarget(v) !== coercedValue; }; - - case '<': - return function(v) { return d2cTarget(v) < coercedValue; }; - - case '<=': - return function(v) { return d2cTarget(v) <= coercedValue; }; - - case '>': - return function(v) { return d2cTarget(v) > coercedValue; }; - - case '>=': - return function(v) { return d2cTarget(v) >= coercedValue; }; - - case '[]': - return function(v) { - var cv = d2cTarget(v); - return cv >= coercedValue[0] && cv <= coercedValue[1]; - }; - - case '()': - return function(v) { - var cv = d2cTarget(v); - return cv > coercedValue[0] && cv < coercedValue[1]; - }; - - case '[)': - return function(v) { - var cv = d2cTarget(v); - return cv >= coercedValue[0] && cv < coercedValue[1]; - }; - - case '(]': - return function(v) { - var cv = d2cTarget(v); - return cv > coercedValue[0] && cv <= coercedValue[1]; - }; - - case '][': - return function(v) { - var cv = d2cTarget(v); - return cv <= coercedValue[0] || cv >= coercedValue[1]; - }; - - case ')(': - return function(v) { - var cv = d2cTarget(v); - return cv < coercedValue[0] || cv > coercedValue[1]; - }; - - case '](': - return function(v) { - var cv = d2cTarget(v); - return cv <= coercedValue[0] || cv > coercedValue[1]; - }; - - case ')[': - return function(v) { - var cv = d2cTarget(v); - return cv < coercedValue[0] || cv >= coercedValue[1]; - }; - - case '{}': - return function(v) { - return coercedValue.indexOf(d2cTarget(v)) !== -1; - }; - - case '}{': - return function(v) { - return coercedValue.indexOf(d2cTarget(v)) === -1; - }; - } -} diff --git a/src/transforms/groupby.js b/src/transforms/groupby.js deleted file mode 100644 index 4f89c70d695..00000000000 --- a/src/transforms/groupby.js +++ /dev/null @@ -1,269 +0,0 @@ -'use strict'; - -var Lib = require('../lib'); -var PlotSchema = require('../plot_api/plot_schema'); -var Plots = require('../plots/plots'); -var pointsAccessorFunction = require('./helpers').pointsAccessorFunction; - -exports.moduleType = 'transform'; - -exports.name = 'groupby'; - -exports.attributes = { - enabled: { - valType: 'boolean', - dflt: true, - editType: 'calc', - description: [ - 'Determines whether this group-by transform is enabled or disabled.' - ].join(' ') - }, - groups: { - valType: 'data_array', - dflt: [], - editType: 'calc', - description: [ - 'Sets the groups in which the trace data will be split.', - 'For example, with `x` set to *[1, 2, 3, 4]* and', - '`groups` set to *[\'a\', \'b\', \'a\', \'b\']*,', - 'the groupby transform with split in one trace', - 'with `x` [1, 3] and one trace with `x` [2, 4].' - ].join(' ') - }, - nameformat: { - valType: 'string', - editType: 'calc', - description: [ - 'Pattern by which grouped traces are named. If only one trace is present,', - 'defaults to the group name (`"%{group}"`), otherwise defaults to the group name', - 'with trace name (`"%{group} (%{trace})"`). Available escape sequences are `%{group}`, which', - 'inserts the group name, and `%{trace}`, which inserts the trace name. If grouping', - 'GDP data by country when more than one trace is present, for example, the', - 'default "%{group} (%{trace})" would return "Monaco (GDP per capita)".' - ].join(' ') - }, - styles: { - _isLinkedToArray: 'style', - target: { - valType: 'string', - editType: 'calc', - description: [ - 'The group value which receives these styles.' - ].join(' ') - }, - value: { - valType: 'any', - dflt: {}, - editType: 'calc', - description: [ - 'Sets each group styles.', - 'For example, with `groups` set to *[\'a\', \'b\', \'a\', \'b\']*', - 'and `styles` set to *[{target: \'a\', value: { marker: { color: \'red\' } }}]', - 'marker points in group *\'a\'* will be drawn in red.' - ].join(' '), - _compareAsJSON: true - }, - editType: 'calc' - }, - editType: 'calc' -}; - -/** - * Supply transform attributes defaults - * - * @param {object} transformIn - * object linked to trace.transforms[i] with 'type' set to exports.name - * @param {object} traceOut - * the _fullData trace this transform applies to - * @param {object} layout - * the plot's (not-so-full) layout - * @param {object} traceIn - * the input data trace this transform applies to - * - * @return {object} transformOut - * copy of transformIn that contains attribute defaults - */ -exports.supplyDefaults = function(transformIn, traceOut, layout) { - var i; - var transformOut = {}; - - function coerce(attr, dflt) { - return Lib.coerce(transformIn, transformOut, exports.attributes, attr, dflt); - } - - var enabled = coerce('enabled'); - - if(!enabled) return transformOut; - - coerce('groups'); - coerce('nameformat', layout._dataLength > 1 ? '%{group} (%{trace})' : '%{group}'); - - var styleIn = transformIn.styles; - var styleOut = transformOut.styles = []; - - if(styleIn) { - for(i = 0; i < styleIn.length; i++) { - var thisStyle = styleOut[i] = {}; - Lib.coerce(styleIn[i], styleOut[i], exports.attributes.styles, 'target'); - var value = Lib.coerce(styleIn[i], styleOut[i], exports.attributes.styles, 'value'); - - // so that you can edit value in place and have Plotly.react notice it, or - // rebuild it every time and have Plotly.react NOT think it changed: - // use _compareAsJSON to say we should diff the _JSON_value - if(Lib.isPlainObject(value)) thisStyle.value = Lib.extendDeep({}, value); - else if(value) delete thisStyle.value; - } - } - - return transformOut; -}; - - -/** - * Apply transform !!! - * - * @param {array} data - * array of transformed traces (is [fullTrace] upon first transform) - * - * @param {object} state - * state object which includes: - * - transform {object} full transform attributes - * - fullTrace {object} full trace object which is being transformed - * - fullData {array} full pre-transform(s) data array - * - layout {object} the plot's (not-so-full) layout - * - * @return {object} newData - * array of transformed traces - */ -exports.transform = function(data, state) { - var newTraces, i, j; - var newData = []; - - for(i = 0; i < data.length; i++) { - newTraces = transformOne(data[i], state); - - for(j = 0; j < newTraces.length; j++) { - newData.push(newTraces[j]); - } - } - - return newData; -}; - -function transformOne(trace, state) { - var i, j, k, attr, srcArray, groupName, newTrace, transforms, arrayLookup; - var groupNameObj; - - var opts = state.transform; - var transformIndex = state.transformIndex; - var groups = trace.transforms[transformIndex].groups; - var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); - - if(!(Lib.isArrayOrTypedArray(groups)) || groups.length === 0) { - return [trace]; - } - - var groupNames = Lib.filterUnique(groups); - var newData = new Array(groupNames.length); - var len = groups.length; - - var arrayAttrs = PlotSchema.findArrayAttributes(trace); - - var styles = opts.styles || []; - var styleLookup = {}; - for(i = 0; i < styles.length; i++) { - styleLookup[styles[i].target] = styles[i].value; - } - - if(opts.styles) { - groupNameObj = Lib.keyedContainer(opts, 'styles', 'target', 'value.name'); - } - - // An index to map group name --> expanded trace index - var indexLookup = {}; - var indexCnts = {}; - - for(i = 0; i < groupNames.length; i++) { - groupName = groupNames[i]; - indexLookup[groupName] = i; - indexCnts[groupName] = 0; - - // Start with a deep extend that just copies array references. - newTrace = newData[i] = Lib.extendDeepNoArrays({}, trace); - newTrace._group = groupName; - newTrace.transforms[transformIndex]._indexToPoints = {}; - - var suppliedName = null; - if(groupNameObj) { - suppliedName = groupNameObj.get(groupName); - } - - if(suppliedName || suppliedName === '') { - newTrace.name = suppliedName; - } else { - newTrace.name = Lib.templateString(opts.nameformat, { - trace: trace.name, - group: groupName - }); - } - - // In order for groups to apply correctly to other transform data (e.g. - // a filter transform), we have to break the connection and clone the - // transforms so that each group writes grouped values into a different - // destination. This function does not break the array reference - // connection between the split transforms it creates. That's handled in - // initialize, which creates a new empty array for each arrayAttr. - transforms = newTrace.transforms; - newTrace.transforms = []; - for(j = 0; j < transforms.length; j++) { - newTrace.transforms[j] = Lib.extendDeepNoArrays({}, transforms[j]); - } - - // Initialize empty arrays for the arrayAttrs, to be split in the next step - for(j = 0; j < arrayAttrs.length; j++) { - Lib.nestedProperty(newTrace, arrayAttrs[j]).set([]); - } - } - - // For each array attribute including those nested inside this and other - // transforms (small note that we technically only need to do this for - // transforms that have not yet been applied): - for(k = 0; k < arrayAttrs.length; k++) { - attr = arrayAttrs[k]; - - // Cache all the arrays to which we'll push: - for(j = 0, arrayLookup = []; j < groupNames.length; j++) { - arrayLookup[j] = Lib.nestedProperty(newData[j], attr).get(); - } - - // Get the input data: - srcArray = Lib.nestedProperty(trace, attr).get(); - - // Send each data point to the appropriate expanded trace: - for(j = 0; j < len; j++) { - // Map group data --> trace index --> array and push data onto it - arrayLookup[indexLookup[groups[j]]].push(srcArray[j]); - } - } - - for(j = 0; j < len; j++) { - newTrace = newData[indexLookup[groups[j]]]; - - var indexToPoints = newTrace.transforms[transformIndex]._indexToPoints; - indexToPoints[indexCnts[groups[j]]] = originalPointsAccessor(j); - indexCnts[groups[j]]++; - } - - for(i = 0; i < groupNames.length; i++) { - groupName = groupNames[i]; - newTrace = newData[i]; - - Plots.clearExpandedTraceDefaultColors(newTrace); - - // there's no need to coerce styleLookup[groupName] here - // as another round of supplyDefaults is done on the transformed traces - newTrace = Lib.extendDeepNoArrays(newTrace, styleLookup[groupName] || {}); - } - - return newData; -} diff --git a/src/transforms/helpers.js b/src/transforms/helpers.js deleted file mode 100644 index 539889b962c..00000000000 --- a/src/transforms/helpers.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -exports.pointsAccessorFunction = function(transforms, opts) { - var tr; - var prevIndexToPoints; - for(var i = 0; i < transforms.length; i++) { - tr = transforms[i]; - if(tr === opts) break; - if(!tr._indexToPoints || tr.enabled === false) continue; - prevIndexToPoints = tr._indexToPoints; - } - var originalPointsAccessor = prevIndexToPoints ? - function(i) {return prevIndexToPoints[i];} : - function(i) {return [i];}; - return originalPointsAccessor; -}; diff --git a/src/transforms/sort.js b/src/transforms/sort.js deleted file mode 100644 index 083d3432328..00000000000 --- a/src/transforms/sort.js +++ /dev/null @@ -1,154 +0,0 @@ -'use strict'; - -var Lib = require('../lib'); -var Axes = require('../plots/cartesian/axes'); -var pointsAccessorFunction = require('./helpers').pointsAccessorFunction; - -var BADNUM = require('../constants/numerical').BADNUM; - -exports.moduleType = 'transform'; - -exports.name = 'sort'; - -exports.attributes = { - enabled: { - valType: 'boolean', - dflt: true, - editType: 'calc', - description: [ - 'Determines whether this sort transform is enabled or disabled.' - ].join(' ') - }, - target: { - valType: 'string', - strict: true, - noBlank: true, - arrayOk: true, - dflt: 'x', - editType: 'calc', - description: [ - 'Sets the target by which the sort transform is applied.', - - 'If a string, *target* is assumed to be a reference to a data array', - 'in the parent trace object.', - 'To sort about nested variables, use *.* to access them.', - 'For example, set `target` to *marker.size* to sort', - 'about the marker size array.', - - 'If an array, *target* is then the data array by which', - 'the sort transform is applied.' - ].join(' ') - }, - order: { - valType: 'enumerated', - values: ['ascending', 'descending'], - dflt: 'ascending', - editType: 'calc', - description: [ - 'Sets the sort transform order.' - ].join(' ') - }, - editType: 'calc' -}; - -exports.supplyDefaults = function(transformIn) { - var transformOut = {}; - - function coerce(attr, dflt) { - return Lib.coerce(transformIn, transformOut, exports.attributes, attr, dflt); - } - - var enabled = coerce('enabled'); - - if(enabled) { - coerce('target'); - coerce('order'); - } - - return transformOut; -}; - -exports.calcTransform = function(gd, trace, opts) { - if(!opts.enabled) return; - - var targetArray = Lib.getTargetArray(trace, opts); - if(!targetArray) return; - - var target = opts.target; - - var len = targetArray.length; - if(trace._length) len = Math.min(len, trace._length); - - var arrayAttrs = trace._arrayAttrs; - var d2c = Axes.getDataToCoordFunc(gd, trace, target, targetArray); - var indices = getIndices(opts, targetArray, d2c, len); - var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); - var indexToPoints = {}; - var i, j; - - for(i = 0; i < arrayAttrs.length; i++) { - var np = Lib.nestedProperty(trace, arrayAttrs[i]); - var arrayOld = np.get(); - var arrayNew = new Array(len); - - for(j = 0; j < len; j++) { - arrayNew[j] = arrayOld[indices[j]]; - } - - np.set(arrayNew); - } - - for(j = 0; j < len; j++) { - indexToPoints[j] = originalPointsAccessor(indices[j]); - } - - opts._indexToPoints = indexToPoints; - trace._length = len; -}; - -function getIndices(opts, targetArray, d2c, len) { - var sortedArray = new Array(len); - var indices = new Array(len); - var i; - - for(i = 0; i < len; i++) { - sortedArray[i] = {v: targetArray[i], i: i}; - } - - sortedArray.sort(getSortFunc(opts, d2c)); - - for(i = 0; i < len; i++) { - indices[i] = sortedArray[i].i; - } - - return indices; -} - -function getSortFunc(opts, d2c) { - switch(opts.order) { - case 'ascending': - return function(a, b) { - var ac = d2c(a.v); - var bc = d2c(b.v); - if(ac === BADNUM) { - return 1; - } - if(bc === BADNUM) { - return -1; - } - return ac - bc; - }; - case 'descending': - return function(a, b) { - var ac = d2c(a.v); - var bc = d2c(b.v); - if(ac === BADNUM) { - return 1; - } - if(bc === BADNUM) { - return -1; - } - return bc - ac; - }; - } -} diff --git a/src/types/ARCHITECTURE.md b/src/types/ARCHITECTURE.md new file mode 100644 index 00000000000..06d6064a0ee --- /dev/null +++ b/src/types/ARCHITECTURE.md @@ -0,0 +1,252 @@ +# Type System Architecture + +How TypeScript types are organized in plotly.js. + +## Three layers + +``` +┌──────────────────────────────────────────────────────────────┐ +│ Consumer surface (what `npm install plotly.js` exposes) │ +│ lib/index.d.ts — wired via package.json#types │ +│ `export type *` for generated schema types + explicit │ +│ re-exports of hand-written types + `export as namespace │ +│ Plotly` for global/namespace usage. │ +└──────────────────────────────────────────────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────────┐ +│ Internal authoring surface │ +│ src/types/index.d.ts — re-exports everything (internal) │ +└──────────────────────────────────────────────────────────────┘ + │ │ + ▼ ▼ +┌──────────────────────────┐ ┌────────────────────────────────┐ +│ Hand-written types │ │ Generated types │ +│ src/types/core/*.d.ts │ │ src/types/generated/... │ +│ src/types/lib/*.d.ts │ │ │ +│ │ │ schema.d.ts — common enums, │ +│ │ │ traces, layout, animation, │ +│ │ │ config, _internal namespace │ +└──────────────────────────┘ └────────────────────────────────┘ +``` + +`lib/index.d.ts` deliberately omits internal types (`FullLayout`, +`FullData`, `GraphDiv`, the `AttributeMap` machinery, etc.) so consumers +see a clean public API. Internal types live in `.internal.d.ts` files and +remain accessible to plotly.js's own code through the `src/types/` +re-exports. + +The split: + +- **Generated types** (`src/types/generated`) are the authoritative TypeScript representation of + the runtime schema. The schema itself is produced from Plotly's JS + attribute files (`src/.../attributes.js`), which remain the source of + truth: chain is **attribute files → `plot-schema.json` → generated + types**. + - **`src/types/generated/schema.d.ts`** contains: + - **Common enum aliases** discovered from the schema (Calendar, Dash, + AxisType, PatternShape, XRef, YRef, TransitionEasing, TraceType — plus + a deprecated `PlotType` alias for back-compat). + - **Shared sub-interfaces** extracted from repeated subtrees (Font, + FontArray, ColorBar, HoverLabel, Domain, Pattern, TickFormatStops, + LegendGroupTitle). + - **Per-trace data interfaces** for all trace types (BarData, ScatterData, + IndicatorData, etc.), plus the **`Data` discriminated union** over all + of them (`Partial | Partial | …`) — narrowed via + the `type` field. + - **Layout component interfaces** (LayoutAxis, Legend, Scene, + Annotation, Shape, Slider, UpdateMenu, etc.) and the Layout + interface itself. + - **Animation, frames, and config interfaces** (Transition, + AnimationFrameOpts, AnimationOpts, Frame, Edits) generated from + `schema.animation`, `schema.frames`, and `schema.config.edits`. + - **`_internal` namespace** wrapping types whose direct names would + mislead consumers (Marker is scatter-only, Line is the marker + outline) or are schema-internal helpers (AutoRangeOptions, + Lighting, ErrorY). Reachable as `_internal.Marker` etc. + but not at the top level. + + Generated from `plot-schema.json` by `tasks/generate_schema_types.mjs`. + Run `npm run schema` to regenerate. +- **Hand-written types** (everything in `src/types/` besides the `generated/` directory) + cover everything the schema doesn't describe: + events, internal runtime state, public API function signatures, + utility types (Color, Datum, MarkerSymbol, ErrorBar), behavioral types + (ModeBarButton, Icon, etc.). + +## Public vs. private (the underscore convention) + +Plotly's runtime stores two kinds of state on graph elements: + +- **Public** — user-supplied, what `Plotly.newPlot(gd, data, layout)` accepts +- **Private** (`_` prefix) — fully-resolved versions Plotly computes after + applying defaults, defined modules, and so on + +This split is reflected in the types: + +| User-facing | Internal | Where defined | +|---|---|---| +| `Layout` | `FullLayout` | `Layout` in `generated/schema.d.ts`; `FullLayout` in `core/layout.internal.d.ts` | +| `Data` (union over `type`) | `FullData` | `Data` in `generated/schema.d.ts` (union of schema `*Data` interfaces); `FullData = Data & FullDataInternals` in `core/data.internal.d.ts` | +| (n/a) | `GraphDiv` (the `gd` param) | `core/graph-div.internal.d.ts` — DOM element with `_fullLayout`, `_fullData`, `calcdata`, etc. | + +`FullData` is the discriminated union of schema trace types intersected with +the internal `_`-prefixed fields. Internal code that narrows on `trace.type` +gets trace-specific fields plus the internal state in the same expression. + +Internal types use index signatures (`[key: string]: any`) liberally to +allow incremental migration without blocking. As `_` properties get +discovered during JS→TS conversion, add them to `FullLayout` or +`FullDataInternals` (the file-local intersection target inside +`data.internal.d.ts`). + +## Directory layout + +``` +src/types/ +├── index.d.ts # main re-export hub (public + internal) +├── core/ # hand-written types for the core API +│ ├── api.d.ts # public API function signatures (newPlot, etc.) +│ ├── config.d.ts # Config, ToImgopts (Edits re-exported from generated) +│ ├── data.internal.d.ts # CalcData, FullData +│ ├── events.d.ts # PlotMouseEvent, PlotlyHTMLElement, etc. +│ ├── graph-div.internal.d.ts # GraphDiv, GraphContext +│ ├── layout.d.ts # AxisName, ModeBar behavioral types, Template +│ └── layout.internal.d.ts # FullLayout, LayoutSize, SubplotInfo +│ +├── lib/ # primitives + the schema-extraction machinery +│ ├── common.d.ts # Color, Datum, TypedArray, MarkerSymbol, ... +│ └── attributes.d.ts # AttributeMap, AttrInfo (compile-time validation) +│ +└── generated/ # machine-generated types + └── schema.d.ts # all traces + layout + shared types (from plot-schema.json) +``` + +### The `.internal.d.ts` convention + +Files with the `.internal.d.ts` suffix contain types that are **not** part of the +public API (not re-exported in `lib/index.d.ts`). These are internal runtime types +used only within plotly.js itself — `FullLayout`, `FullData`, `GraphDiv`, etc. + +If a file has no `.internal` suffix, all its exports are public. + +## How schema type generation works + +``` +test/plot-schema.json (runtime schema: traces + layout + animation + config) + │ + ▼ +[ tasks/generate_schema_types.mjs ] + │ + │ 0. Discover common enum aliases via COMMON_TYPE_ANCHORS + │ (Calendar/Dash/AxisType/PatternShape/XRef/YRef/TransitionEasing, + │ plus TraceType derived from the trace-names list, plus a deprecated + │ `PlotType` alias) + │ 1. Fingerprint every container subtree across traces and layout + │ 2. Extract shared interfaces (Font, ColorBar, HoverLabel, etc.). + │ Inject Transition and AnimationFrameOpts as shared types + │ (animation has < MIN_OCCURRENCES sites otherwise) + │ 3. Emit per-trace interfaces referencing shared types + │ 4. Emit layout component interfaces (LayoutAxis, Legend, Scene, etc.) + │ and the Layout interface with subplot index signatures + │ 5. Emit AnimationOpts (from schema.animation), Frame (from + │ schema.frames with field overrides for the recursive data/layout + │ fields), and Edits (from schema.config.edits) + │ 6. Wrap names in INTERNAL_INTERFACES inside `export namespace _internal` + │ and rewrite outside-namespace references to `_internal.X` + │ + ▼ +src/types/generated/schema.d.ts + │ // Common enum aliases + │ export type Calendar = 'chinese' | 'coptic' | ...; + │ export type TraceType = 'bar' | 'scatter' | ...; + │ /** @deprecated Renamed to TraceType. */ + │ export type PlotType = TraceType; + │ // Shared interfaces (public) + │ export interface Font { ... } + │ export interface ColorBar { ... } + │ // Internal namespace + │ export namespace _internal { + │ export interface Marker { ... } + │ export interface Line { ... } + │ // ... + │ } + │ // Trace interfaces + │ export interface ScatterData { marker?: _internal.Marker; ... } + │ export interface BarData { ... } + │ // Discriminated union over all traces + │ export type Data = Partial | Partial | ...; + │ // Layout + │ export interface LayoutAxis { autorangeoptions?: _internal.AutoRangeOptions; ... } + │ export interface Layout { ... } + │ // Animation / config + │ export interface AnimationOpts { transition?: Transition; ... } + │ export interface Frame { data?: any[]; layout?: Partial; ... } + │ export interface Edits { ... } + │ + ▼ +src/types/index.d.ts re-exports all types (internal authoring index). +lib/index.d.ts uses `export type * from '.../generated/schema'` so every +public schema-derived type is automatically re-exported to consumers. +``` + +Regenerate with `npm run schema` (which rebuilds plot-schema.json +and then runs the schema type generator). + +## What's hand-written and stays that way + +The schema doesn't describe: + +- **Events** — `PlotMouseEvent`, `PlotHoverEvent`, `LegendClickEvent`, + `PlotlyHTMLElement` and its `on()` overloads. These are runtime contracts. +- **Public API function signatures** — `Plotly.newPlot`, `relayout`, + `restyle`, etc. Live in `src/types/core/api.d.ts`. +- **Internal runtime state** — `FullLayout._modules`, `GraphDiv._fullData`, + `_calcInverseTransform`, etc. Live in `.internal.d.ts` files in `src/types/core/`. +- **Behavioral types** — `ModeBarButton`, `ModeBarDefaultButtons`, `Icon`, + `ButtonClickEvent`, `Template`. These describe runtime behavior patterns + not captured in the attribute schema. +- **Utility types** — `Color`, `Datum`, `TypedArray`, `MarkerSymbol`, etc. + Live in `src/types/lib/common.d.ts`. The generator references these types. + +## Adding internal properties + +When converting a JS file to TS and discovering an internal property like +`fullLayout._someFlag`, add it to the corresponding `Full*` interface: + +```ts +// src/types/core/layout.internal.d.ts +export interface FullLayout extends Layout { + _modules?: any[]; + _someFlag?: boolean; // add new ones here + [key: string]: any; +} +``` + +The `[key: string]: any` index signature is intentional — it absorbs +unknown internal properties so JS code can be migrated piecewise without +type errors. + +## Coding conventions + +### JSDoc on TypeScript functions + +For exported functions in `.ts` source files, use a top-level JSDoc block +with `@param name - description` lines. Omit the type from `@param` +(the TS signature already has it) and use a hyphen separator: + +```ts +/** + * make a regex for matching counter ids/names ie xaxis, xaxis2, xaxis10... + * + * @param head - the head of the pattern, eg 'x' matches 'x', 'x2', 'x10' etc. + * @param tail - a fixed piece after the id + */ +export function counter(head: string, tail: string = '') { ... } +``` + +## See also + +- [SETUP.md](SETUP.md) — toolchain and npm scripts +- [CONVERTING_ATTRIBUTES.md](CONVERTING_ATTRIBUTES.md) — the conversion recipe +- [GENERATOR.md](GENERATOR.md) — internals of the type generators diff --git a/src/types/CONVERTING_ATTRIBUTES.md b/src/types/CONVERTING_ATTRIBUTES.md new file mode 100644 index 00000000000..9d06863984a --- /dev/null +++ b/src/types/CONVERTING_ATTRIBUTES.md @@ -0,0 +1,199 @@ +# Converting Attribute Files to TypeScript + +This is the **active workflow** for migrating Plotly's `attributes.js` files +to TypeScript. Attribute files are the source of truth for the runtime +schema; the schema in turn drives the generated public TypeScript types. +Conversion doesn't change that chain — it adds compile-time validation on +top of it. + +## Why + +Without `as const satisfies AttributeMap`, malformed attribute objects +(missing `valType`, typo'd `values` arrays, wrong `dflt` shape, etc.) only +fail when the runtime tries to use them. Converted attribute files catch +those structural mistakes at TypeScript-compile time, before they ever +reach the schema. + +Conversion is also a small step toward typing the rest of the file (and +eventually the rest of the source tree) in TypeScript, but the immediate +value is the compile-time structural check. + +## Recipe + +Pick any `attributes.js` file. The recipe is the same for every one. A +small file takes ~10 minutes; a complex trace might take an hour. + +### 1. Rename and stub the imports + +Rename `src//attributes.js` → `src//attributes.ts`. + +At the top of the file, add: + +```ts +import type { AttributeMap } from '../../types/lib/attributes'; +// (adjust the relative path so it points at src/types/lib/attributes) +``` + +### 2. Convert the export + +Replace `module.exports = { ... };` with: + +```ts +const attributes = { + // ... existing attribute definitions go here +} as const satisfies AttributeMap; + +export default attributes; +``` + +Two things to notice: + +- **`as const satisfies AttributeMap`** — `as const` preserves literal types + like `values: ['v', 'h']`; `satisfies AttributeMap` validates structure + without widening. +- **`export default`** — runtime consumers (`require('./attributes').default`) + get the object. + +### 3. Fix array literals and string literals + +Anywhere an attribute uses a literal-array of options, add `as const`: + +```ts +// Before +values: ['v', 'h'], + +// After +values: ['v', 'h'] as const, +``` + +Without `as const`, `values` widens to `string[]` and `dflt` is no longer +constrained to be one of `values`. `as const` is what lets `AttributeMap` +catch `dflt`-not-in-`values` typos at compile time. + +### 4. Update consumers' `require()` calls + +Find every JS file that `require('./attributes')` (relative to the converted +file) and update to `.default`: + +```js +// Before +var attributes = require('./attributes'); + +// After +var attributes = require('./attributes').default; +``` + +ESBuild handles the runtime; this update is just for the JS-level CommonJS +interop pattern the project already uses for converted files. + +### 5. Verify the schema generator covers the type + +Consumer-facing types for traces and layout components are generated from +`plot-schema.json` by `tasks/generate_schema_types.mjs`. After converting +an `attributes.ts` file, verify the corresponding type already exists in +`src/types/generated/schema.d.ts`. If it does, no further action is needed +for the type — the conversion's main value is type-checking the source. + +If the schema-generated type is missing properties that the hand-written +type had, those properties are likely runtime-only internal state and +should be added to the corresponding `Full*` interface instead. + +### 6. Verify + +```bash +npm run typecheck # zero errors +npm run schema-typegen-diff-check # regen + check test/plot-schema.json + # and src/types/generated/ are unchanged +``` + +The `schema-typegen-diff-check` script regenerates both the runtime schema +and the generated `.d.ts`, then `git diff --exit-code`s them. A correct +conversion produces a byte-identical schema; CI fails otherwise. This is +the conversion's safety net — if either file diffs after the conversion, +the attribute object's runtime shape changed (most often a missed +`as const` or a typo). Compare character-by-character with the original +`.js` file. + +### 7. Commit + +```bash +git add src//attributes.ts \ + src//index.js src//defaults.js # (whichever consumers you updated) +git commit -m "Convert attributes to TypeScript" +``` + +The conversion is a single self-contained commit per file. There's +nothing to commit under `src/types/` for a correct conversion — the +generated types are byte-identical (which is exactly what +`schema-typegen-diff-check` confirmed in step 6). + +## Worked example: modebar + +See [`src/components/modebar/attributes.ts`](../components/modebar/attributes.ts) +for the canonical example. The full conversion changed: + +- `src/components/modebar/attributes.js` → `src/components/modebar/attributes.ts` + (with `as const satisfies AttributeMap`) +- `.default` added to `require('./attributes')` in `index.js` and `defaults.js` + +Note: Consumer-facing types for modebar (and all other layout components) +are generated from `plot-schema.json` by `tasks/generate_schema_types.mjs`, +not from the individual `attributes.ts` files. The `attributes.ts` conversion +still adds value by type-checking the source attribute definitions against +`AttributeMap`. + +## What if I need a type the schema doesn't describe well? + +The schema-generated types are authoritative for everything in +`plot-schema.json`. If something is missing or too loose: + +1. **Compare**. Look at the schema-generated type in `schema.d.ts`. +2. **If schema is too loose** (e.g. `string` where the schema should have + a typed union of valid values, or `any` where a proper shape could be + described), fix it at the JS attribute source so every language port + benefits — not via a generator-side override. +3. **If the field is an internal runtime artifact** (not in the user-facing + schema), add it to the appropriate `.internal.d.ts` file. For trace + internal fields, that's `FullDataInternals` inside + `core/data.internal.d.ts` (which `FullData` intersects with `Data`). + For layout internal fields, it's `FullLayout` in `layout.internal.d.ts`. +4. **If the schema has fields and a generator-side override is the only + path** (e.g. recursive references like `Frame.data` pointing back to the + trace-data union), use the `fieldOverrides` parameter on + `attrsToProperties` in the generator. See GENERATOR.md. + +## Schema-generated types + +All trace data interfaces, layout component interfaces, and the Layout +interface itself are generated from `plot-schema.json` by +`tasks/generate_schema_types.mjs` (run via `npm run schema`). Individual +trace and layout `attributes.js` files do **not** need to be converted +for their types to appear in the public API — the schema generator +covers them automatically. + +## Order of conversion (for parallel work) + +Pick from this priority list. Lower-numbered items are smaller / simpler. + +### Tier 1: small components (good first conversions) +- `src/components/modebar/attributes.js` — **DONE** (canonical example) +- `src/components/rangeslider/attributes.js` — small, self-contained +- `src/plots/gl3d/layout/attributes.js` — tiny (one `subplotid`) +- `src/plots/cartesian/attributes.js` — small +- `src/components/fx/attributes.js` — uses helpers (`fontAttrs`, shared sub-objects) + +> Note: `src/components/color/attributes.js` is named like an attribute file +> but actually just exports color constants. It doesn't follow the schema +> pattern and shouldn't be converted with this recipe. + +### Tier 2: medium components +- Sliders, updatemenus, rangeselector, colorbar attribute files + +### Tier 3: layout +- Layout itself + +## Working in parallel + +Multiple converters can work on different attribute files in parallel. +Each conversion is self-contained within one component's directory plus +its direct `require()`-callers, so merge conflicts are rare. diff --git a/src/types/GENERATOR.md b/src/types/GENERATOR.md new file mode 100644 index 00000000000..d5b2f188242 --- /dev/null +++ b/src/types/GENERATOR.md @@ -0,0 +1,341 @@ +# Type Generator Internals + +The **schema-based generator** (`tasks/generate_schema_types.mjs`) +reads `plot-schema.json` and emits all the schema-derived TypeScript +types into `src/types/generated/schema.d.ts`: + +- Common enum aliases (Calendar, Dash, AxisType, PatternShape, XRef, YRef, + TransitionEasing, TraceType — plus a deprecated `PlotType` alias) +- Shared sub-interfaces (Font, ColorBar, HoverLabel, etc.) +- Data interfaces for each trace type (BarData, ScatterData, IndicatorData, etc.) + and the `Data` discriminated union over all of them +- Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, etc.) + and the Layout interface itself +- Animation / frame / edits interfaces (AnimationOpts, Frame, Edits) +- An `_internal` namespace wrapping types whose direct names would mislead + consumers or are schema-internal helpers + +Run via `npm run schema`. + +## How it works + +`tasks/generate_schema_types.mjs` is called by `tasks/schema.mjs` after +writing `plot-schema.json`. The generator walks `schema.traces`, +`schema.layout.layoutAttributes`, `schema.animation`, `schema.frames`, and +`schema.config` (including `schema.config.edits`), mapping each attribute's +`valType` metadata to a TypeScript type. The set of meta keys to strip +during emission is read from `schema.defs.metaKeys` so any addition to the +schema's metadata format is picked up automatically. + +### Phase 0: Common enum discovery + +`discoverCommonTypes(schema)` walks the schema looking for enumerated +attributes whose key/path/values match an entry in `COMMON_TYPE_ANCHORS`: + +```js +const COMMON_TYPE_ANCHORS = [ + { name: 'Calendar', match: (key) => /^[xyz]?calendar$/.test(key) }, + { name: 'Dash', match: (key) => key === 'dash' }, + { name: 'AxisType', match: (key, path) => key === 'type' && /[xyz]axis\.type$/.test(path) }, + // ... +]; +``` + +When multiple sites match an anchor (e.g. 3D scene axes vs cartesian axes +both have `xaxis.type` enumerations), the generator picks the largest +value set — the superset — so the alias is always permissive enough. +`TraceType` is special-cased: derived from `Object.keys(schema.traces)` +rather than from an attribute. A deprecated `PlotType = TraceType` alias +is also emitted for back-compat with prior versions of the type surface. + +Each discovered alias is emitted as `export type Name = 'a' | 'b' | ...` +and registered in `VALUES_TO_COMMON_TYPE` so subsequent emission of any +attribute whose `values` array matches an anchor produces a reference +to the alias instead of an inlined literal union. + +### Phase 1: Fingerprinting + +The generator fingerprints every container subtree across all traces and +layout. Two containers are considered identical when their sorted keys +and leaf `valType`s produce the same fingerprint string. + +### Phase 2: Shared interface extraction + +Containers that appear at least `MIN_OCCURRENCES` times AND have at +least `MIN_PROPERTIES` properties become shared interfaces (Font, +ColorBar, HoverLabel, etc.). PascalCase naming is controlled by +`SHARED_NAME_OVERRIDES` so e.g. `colorbar` becomes `ColorBar` rather than +`Colorbar`: + +```js +const SHARED_NAME_OVERRIDES = new Map([ + ['colorbar', 'ColorBar'], + ['hoverlabel', 'HoverLabel'], + ['tickformatstops', 'TickFormatStops'], + ['autorangeoptions', 'AutoRangeOptions'], + ['legendgrouptitle', 'LegendGroupTitle'], + ['error_y', 'ErrorY'], + ['error_x', 'ErrorX'], +]); +``` + +Names in `SHARED_NAME_OVERRIDES` bypass `MIN_PROPERTIES`, so small +containers like `ErrorX` / `ErrorY` (3 properties) can be opted in as shared. + +After fingerprinting completes, the generator **injects** the `transition` +and `frame` subtrees from `schema.animation` as shared types (`Transition` +and `AnimationFrameOpts`). These occur fewer than `MIN_OCCURRENCES` times +so the automatic extractor skips them, but they need to be named for +`AnimationOpts` to reference them cleanly. + +### Phase 3: Trace interfaces + +Each trace gets an interface (`ScatterData`, `BarData`, etc.) whose +properties reference shared types where fingerprints match. After all +trace interfaces are emitted, the generator also emits the discriminated +union `Data = Partial | Partial | …` covering every +trace — narrowed via the `type` field. Adding or removing a trace in the +schema flows through automatically. + +### Phase 4: Layout types + +Layout generation handles three categories: + +- **Subplot containers** (`_isSubplotObj` flag) — grouped by target name + and merged into supersets. E.g., `xaxis` and `yaxis` both map to + `LayoutAxis` with the union of all their keys. +- **Linked-to-array containers** (detected via `{items: {name: {...}}}`) + — extracted as named interfaces (Annotation, Shape, Slider, etc.). + In the Layout interface they appear as arrays: `annotations?: Annotation[]`. +- **Regular containers** — inlined or referenced as shared types. + +The Layout interface includes subplot index signatures: +```ts +[key: `xaxis${number}`]: LayoutAxis; +[key: `yaxis${number}`]: LayoutAxis; +// etc. +``` + +### Phase 5: Animation, frame, edits, and config interfaces + +`AnimationOpts` is emitted from `schema.animation` (references the +injected `Transition` and `AnimationFrameOpts` shared types). `Frame` is +emitted from `schema.frames.items.frames_entry` with **field overrides** +for the recursively-typed fields the schema describes as `valType: any`: + +```js +attrsToProperties(frameEntry, ' ', 'frame', sharedTypes, { + data: 'any[]', + layout: 'Partial' +}); +``` + +The override mechanism is the `fieldOverrides` param on `attrsToProperties` +— useful for any field whose schema description is too loose because the +schema can't self-reference. `Edits` is emitted from `schema.config.edits` +without overrides (all fields are concrete booleans). + +`ConfigBase` is emitted from `schema.config` after registering Edits' +fingerprint in `sharedTypes`, so `edits?: Edits` references the named +interface rather than re-inlining the subtree. Six config fields whose +schema `valType` is `any` (`locales`, `modeBarButtons`, +`modeBarButtonsToAdd`, `modeBarButtonsToRemove`, `setBackground`, +`toImageButtonOptions`) come through as `any`; the hand-written `Config` +in `core/config.d.ts` overrides them via +`Omit & ConfigOverrides`. + +### Phase 6: Internal namespace + +Names in `INTERNAL_INTERFACES` are wrapped in `export namespace _internal { +... }` rather than emitted at the top level: + +```js +const INTERNAL_INTERFACES = new Set([ + 'AutoRangeOptions', 'ErrorY', 'Lighting', 'Line', 'Marker' +]); +``` + +When emitting a reference to one of these types from outside the namespace +(e.g. `ScatterData.marker?: _internal.Marker`), the generator calls +`refName(name, /*inInternalNamespace=*/false)` which adds the `_internal.` +prefix. Inside the namespace, the same helper returns the bare name so +sibling references stay clean (`Marker.line?: Line`). + +This pattern makes the names module-private to consumers: `import { +Marker }` from `plotly.js` fails because `Marker` isn't a top-level +declaration. The names are only reachable via `_internal.Marker` (or via +indexed access on the parent type — `ScatterData['marker']`, which is the +preferred path). + +Why a namespace and not just dropping `export`? TypeScript's `.d.ts` file +semantics let non-exported top-level declarations leak through `export *` +re-exports — a long-standing quirk for backwards compatibility with +hand-written DefinitelyTyped declarations. Wrapping the names in a +namespace makes them non-top-level, so the leak doesn't apply. + +### JSDoc descriptions and metadata + +`formatJSDoc(attr, indent)` emits a multi-line JSDoc block for each leaf +attribute. The block contains the schema's `description` plus `@default`, +numeric bounds (`min`/`max`), and any `impliedEdits` lines when present. +Containers (no `valType`) only carry a description, so the metadata +branches no-op. Plotly's `*emphasis*` markers are preserved as-is (they +render as italics in IDE hover tooltips). Any `*/` sequences in +descriptions are escaped to prevent prematurely closing the comment. + +### Output structure + +``` +src/types/generated/schema.d.ts +├── import { Color, ColorScale, Datum, MarkerSymbol, TypedArray } from '../lib/common' +├── Common enum types (Calendar, Dash, AxisType, PatternShape, XRef, YRef, +│ TransitionEasing, TraceType + deprecated PlotType alias) +├── Shared interfaces — public (Font, FontArray, ColorBar, HoverLabel, Domain, +│ Pattern, TickFormatStops, LegendGroupTitle, ...) +├── Internal shared interfaces in `namespace _internal` (Marker, Line, +│ AutoRangeOptions, +│ Lighting, ErrorY) +├── Trace interfaces (ScatterData, BarData, ... — 49 traces) +├── Data union (`Partial<*Data>` over every trace, discriminated by `type`) +├── Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, etc.) +├── Layout interface +└── Animation / frames / config (AnimationOpts, Frame, Edits, ConfigBase) +``` + +## valType → TypeScript mapping + +Summary: + +| valType | TS produced | +|---|---| +| `data_array` | `Datum[] \| TypedArray` | +| `number`, `integer` | `number` (with `extras` appended as literals; `number \| 'auto'` style) | +| `string` | literal union if `values` provided; matches a common-enum alias when applicable; otherwise `string` | +| `boolean` | `boolean` | +| `color` | `Color` | +| `colorscale` | `ColorScale` | +| `colorlist` | `Color[]` | +| `angle` | `number \| 'auto'` | +| `subplotid` | `string` | +| `enumerated` | literal union of `values`; matches a common-enum alias when applicable | +| `flaglist` | union of flags + extras + `(string & {})` to allow `+`-joined combinations while preserving autocomplete | +| `info_array` | tuple of element `valType`s when fixed-length; `T[]` when `freeLength`; `any[]` fallback | +| `any` | `any` | + +`arrayOk: true` wraps the result in `T | T[]`. + +Attribute name overrides via `ATTR_NAME_OVERRIDES` map specific attribute +paths to a type alias regardless of valType (e.g. `marker.symbol` → +`MarkerSymbol`). + +Reserved keys stripped from the output come from `schema.defs.metaKeys` — +currently `editType`, `role`, `description`, `impliedEdits`, +`_isSubplotObj`, `_isLinkedToArray`, `_arrayAttrRegexps`, `_deprecated`. +New additions to that list are picked up automatically on regen. + +## Extending the schema generator + +### Adding a new common enum alias (Calendar/Dash style) + +If the schema repeats the same enumerated value-set in multiple places and +you want a named alias for it: + +1. Add an entry to `COMMON_TYPE_ANCHORS` with a `name` and a + `match(key, path, values)` predicate that uniquely identifies the + anchor attribute. The discovery walker picks the largest matching + value set as the canonical alias body. +2. Run `npm run schema`. The generator emits `export type = ...` + and rewrites matching enumerated attributes to reference the alias. +3. Run `npm run typecheck` to verify. + +`TraceType` is a special case derived from `Object.keys(schema.traces)` +rather than from an enumerated attribute; it doesn't follow the anchor +mechanism. A deprecated `PlotType = TraceType` alias is emitted alongside it +to keep older imports working. + +### Adding a new layout container + +If a new subplot type or array container is added to the schema: + +1. Add an entry to `LAYOUT_CONTAINER_NAMES` (for subplots marked + `_isSubplotObj`) or `LAYOUT_ARRAY_NAMES` (for linked-to-array + containers). +2. Run `npm run schema` to regenerate. +3. Run `npm run typecheck` to ensure no regressions. + +### Hiding a type inside `_internal` + +Add the name to `INTERNAL_INTERFACES`. The generator will wrap it in the +`_internal` namespace and rewrite all external references to the +`_internal.X` form. Use this when: + +- The name would mislead consumers (it's only one trace's variant, or the + semantics don't match the bare name). +- The type is a schema-internal helper that consumers rarely construct + directly. +- A hand-written type supersedes it (e.g. `ErrorY` is hidden because + `ErrorBar` is the preferred public type). + +### Adding a field override + +If a schema attribute is `valType: 'any'` because it's recursively +self-referential (e.g. `Frame.data` is "the same shape as the trace +data"), pass a `fieldOverrides` map to `attrsToProperties`: + +```js +attrsToProperties(frameEntry, ' ', 'frame', sharedTypes, { + data: 'any[]', + layout: 'Partial' +}); +``` + +The override bypasses the schema-derived type for those field names. Use +this sparingly — when the schema CAN be improved at the source (in the +JS attribute file), prefer that. + +### Improving flaglist support + +Flag lists like `hoverinfo` currently emit a union with `(string & {})` +to allow flag combinations while preserving autocomplete for individual +flags. A fully combinatorial union (`'x' | 'x+y' | 'x+y+text' | ...`) +would produce huge types — 15+ members for `hoverinfo` — and slow down +type checking. Not implemented today; consider whether the autocomplete +win is worth the cost before changing this. + +## Debugging + +If the schema generator emits unexpected types: + +```bash +npm run schema # regenerate and inspect schema.d.ts +npm run typecheck # see what tsc thinks +``` + +Inspect the schema directly: + +```js +const s = require("test/plot-schema.json"); +console.log(s.layout.layoutAttributes.xaxis); // inspect layout attrs +console.log(s.traces.scatter.attributes); // inspect trace attrs +``` + +## Public API re-export + +`lib/index.d.ts` uses `export type * from '../src/types/generated/schema'`, +so every top-level exported type from `schema.d.ts` is automatically +re-exported to consumers. Types inside the `_internal` namespace are still +reachable via `_internal.X` (the namespace itself is exported by the +wildcard) but their bare names are not. + +## CI integration + +`npm run schema-typegen-diff-check` runs the generator and then verifies that +both `test/plot-schema.json` and `src/types/generated/` are unchanged via +`git diff --exit-code`. If either differs, the command fails with exit code 1 +and outputs the diff to the console. + +This is what makes the JS-to-TS conversion workflow safe: a correct +conversion produces a byte-identical schema, so the check passes; an +incorrect conversion (typo in a `values` array, missed default, wrong +`valType`) changes the schema and CI fails until the developer fixes the +source or commits a deliberate change. diff --git a/src/types/README.md b/src/types/README.md new file mode 100644 index 00000000000..b11bd508fcb --- /dev/null +++ b/src/types/README.md @@ -0,0 +1,73 @@ +# TypeScript in plotly.js + +This directory documents the TypeScript conversion in progress. + +| Doc | Audience | +|---|---| +| [SETUP.md](SETUP.md) | First-time contributor — toolchain overview, npm scripts | +| [ARCHITECTURE.md](ARCHITECTURE.md) | Anyone working with types — directory layout, public/private split | +| [CONVERTING_ATTRIBUTES.md](CONVERTING_ATTRIBUTES.md) | **Contributor doing conversion work** — step-by-step recipe | +| [GENERATOR.md](GENERATOR.md) | Maintainer extending or debugging the type generator | + +## Status + +- TypeScript build infrastructure: ✅ done +- Public type surface in `src/types/`: ✅ done +- `AttributeMap` validation machinery: ✅ done +- **Schema-based type generator**: ✅ done — all trace types + layout + shared interfaces +- Consumer entry point (`lib/index.d.ts`, wired via `package.json#types`): ✅ done +- CI gates (`typecheck` + `schema-typegen-diff-check`): ✅ done +- First attribute file converted (modebar): ✅ done +- Conversion of remaining files: 🚧 in progress + +## Open conversion TODOs + +- **`src/fonts/ploticon.js`** — convert so `DefaultIcons` and `IconsMap` in + [`src/types/core/api.d.ts`](core/api.d.ts) can be derived from the module + (`type DefaultIcons = keyof typeof Ploticon`) instead of maintained as a + hand-written union that can drift. Consumers need `.default` appended per the established + [conversion pattern](CONVERTING_ATTRIBUTES.md#L72-L86). + +- **Add dimensionality to `data_array` in the JS attribute sources.** The + schema's `data_array` valType carries no shape info, but several attributes + are genuinely 2D (heatmap/contour/contourcarpet `z`, surface `z` and + `surfacecolor`, 2D `text`/`customdata`/`hovertext` on those traces) or 3D + (`image.z`). The generator currently emits the loose union + `Datum[] | Datum[][] | TypedArray` for *every* `data_array` so 2D/3D usage + typechecks, but the trade-off is that 1D-only fields also accept 2D arrays. + +The published consumer surface lives at [`lib/index.d.ts`](../../lib/index.d.ts). +This `src/types/` directory is the authoring location — internal types live +here, public types are re-exported through `lib/index.d.ts` to consumers. + +## Generated types + +The following are **auto-generated from `plot-schema.json`** by +`tasks/generate_schema_types.mjs`: + +- Common enum aliases (Calendar, Dash, AxisType, PatternShape, XRef, YRef, + TransitionEasing, TraceType — and a deprecated `PlotType` alias) +- Data interfaces for each trace type (BarData, ScatterData, IndicatorData, etc.) + and the `Data` discriminated union over all of them +- Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, + Shape, Slider, UpdateMenu, etc.) and the Layout interface itself +- Shared sub-interfaces (Font, ColorBar, HoverLabel, LegendGroupTitle, etc.) +- Animation / frame / edits interfaces (AnimationOpts, Frame, Edits) +- An `_internal` namespace with helpers like `_internal.Marker`, + `_internal.AutoRangeOptions` that aren't meant as direct public surface + +Run `npm run schema` to regenerate. The output lives at +`src/types/generated/schema.d.ts`. See [GENERATOR.md](GENERATOR.md) for +the generator's internals. + +## How to help + +If you want to convert a component attribute file: + +1. Read [CONVERTING_ATTRIBUTES.md](CONVERTING_ATTRIBUTES.md) +2. Pick a component file from the priority list at the bottom of that doc +3. Claim it in a PR description +4. Follow the recipe +5. Submit a PR + +Each conversion is a single self-contained commit. diff --git a/src/types/SETUP.md b/src/types/SETUP.md new file mode 100644 index 00000000000..3ba19342439 --- /dev/null +++ b/src/types/SETUP.md @@ -0,0 +1,73 @@ +# TypeScript Setup + +Quick reference for the TypeScript toolchain in plotly.js. + +## What's installed + +The following dev dependencies are used for maintaining plotly.js types: + +- `typescript` — used for type-checking only +- `ts-node` — used for running TS scripts (build helpers) +- `@types/node`, `@types/d3` — provide third-party type definitions + +Note: esbuild handles `.ts` files natively for bundling, so no extra plugins are needed for the bundling process. + +`tsconfig.json` sets `noEmit: true` so that tsc never writes files. esbuild is the build system; tsc is the verifier. + +## Configuration + +- [tsconfig.json](../../tsconfig.json) — type checker config +- [esbuild-config.js](../../esbuild-config.js) — bundler config + +Both target ES2016. `strict: true` is on in `tsconfig.json` — the type system is fully strict for the `.d.ts` declarations and converted TypeScript sources. The remaining JS files coexist via `allowJs: true` and are type-checked loosely (no strict null checks etc. on the JS side). + +## npm scripts + +```bash +npm run typecheck # tsc --noEmit, errors reported, no output +npm run typecheck-watch # incremental rechecking on change + +npm run schema # rebuild test/plot-schema.json + regenerate types under src/types/generated/ +npm run schema-typegen-diff-check # regenerate + verify no changes to test/plot-schema.json or src/types/generated/schema.d.ts +npm run build # full production build (regenerate all files under `dist/`) +``` + +## Workflows + +**Editing during development:** + +```bash +# Terminal 1 +npm run typecheck-watch + +# Terminal 2 — bundle/dev server +npm start +``` + +**Before commit:** + +```bash +npm run typecheck +npm run schema # if attribute files changed +``` + +**CI** runs both checks as separate jobs (see `.github/workflows/ci.yml`): + +```bash +npm run typecheck # validates the type system is internally consistent +npm run schema-typegen-diff-check # verifies generated types match the schema +``` + +## How esbuild handles `.ts` + +esbuild has built-in TypeScript support — it strips types and transpiles, no extra config. The catch: when a JS file `require()`s a TS file with a default export, esbuild's CommonJS interop wraps it in `{ default: ... }`. Existing project pattern is to update consumers: + +```js +// Before (JS importing JS) +var attributes = require('./attributes'); + +// After (JS importing TS with `export default`) +var attributes = require('./attributes').default; +``` + +This shows up when converting `attributes.js` → `attributes.ts`. See [CONVERTING_ATTRIBUTES.md](CONVERTING_ATTRIBUTES.md) step 4. diff --git a/src/types/core/api.d.ts b/src/types/core/api.d.ts new file mode 100644 index 00000000000..aa2f4bf38b0 --- /dev/null +++ b/src/types/core/api.d.ts @@ -0,0 +1,329 @@ +/** + * Public API function types for Plotly.js + */ + +import type { AnimationOpts, Data, Frame, Layout } from '../generated/schema'; +import type { Config, DownloadImgopts, ToImgopts } from './config'; +import type { PlotlyHTMLElement } from './events'; +import type { Icon, Template } from './layout'; + +// --------------------------------------------------------------------------- +// Roots and request shapes +// --------------------------------------------------------------------------- + +/** + * Target accepted by most `Plotly.*` calls — either a DOM id string or the + * `HTMLElement` itself (typically the graph div). + */ +export type Root = string | HTMLElement; + +/** + * Figure-shaped object accepted by `newPlot` (in the `data` position) and + * by `toImage`/`downloadImage` when called without an attached graph div. + */ +export interface PlotlyDataLayoutConfig { + /** Trace data array. */ + data: Data[]; + /** Optional layout overrides. */ + layout?: Partial; + /** Optional config overrides. */ + config?: Partial; + /** Optional animation frames. */ + frames?: Frame[]; +} + +/** Either a regular root target or a figure-shaped object. */ +export type RootOrData = Root | PlotlyDataLayoutConfig; + +// --------------------------------------------------------------------------- +// Static plots / icons +// --------------------------------------------------------------------------- + +/** Namespace of static plot helpers (`Plotly.Plots`). */ +export interface StaticPlots { + /** Recompute layout/sizing for the given root. */ + resize(root: Root): void; +} + +/** Names of icons bundled with Plotly's mode-bar. */ +export type DefaultIcons = + | '3d_rotate' + | 'autoscale' + | 'camera-retro' + | 'camera' + | 'disk' + | 'drawcircle' + | 'drawclosedpath' + | 'drawline' + | 'drawopenpath' + | 'drawrect' + | 'eraseshape' + | 'home' + | 'lasso' + | 'movie' + | 'newplotlylogo' + | 'pan' + | 'pencil' + | 'plotlylogo' + | 'question' + | 'selectbox' + | 'spikeline' + | 'tooltip_basic' + | 'tooltip_compare' + | 'undo' + | 'z-axis' + | 'zoom_minus' + | 'zoom_plus' + | 'zoombox'; + +/** Map of built-in icon name → `Icon` definition. */ +export type IconsMap = { [K in DefaultIcons]: Icon }; + +/** Static map of built-in icons (`Plotly.Icons`). */ +export declare const Icons: IconsMap; +/** Static plot helpers namespace (`Plotly.Plots`). */ +export declare const Plots: StaticPlots; + +// --------------------------------------------------------------------------- +// Module registration +// --------------------------------------------------------------------------- + +/** Module descriptor for a trace type (passed to `Plotly.register`). */ +export interface RegisterTraceModule { + /** Discriminator: trace module. */ + moduleType: 'trace'; + /** Trace type name (e.g. `'bar'`). */ + name: string; + /** Categorical tags used by the schema and plot routing. */ + categories: string[]; + /** Module metadata shown in schema docs. */ + meta: { + /** Free-form description of the trace. */ + description: string; + }; +} + +/** Module descriptor for a locale bundle. */ +export interface LocaleModule { + /** Discriminator: locale module. */ + moduleType: 'locale'; + /** Locale id (e.g. `'fr'`, `'en-US'`). */ + name: string; + /** Translation strings keyed by source phrase. */ + dictionary: Record; + /** d3-format-style number/date format spec for the locale. */ + format: Record; +} + +/** Module descriptor for a layout component (e.g. shapes, annotations). */ +export interface RegisterComponentModule { + /** Discriminator: component module. */ + moduleType: 'component'; + /** Component name. */ + name: string; +} + +/** Module descriptor that registers an extra `Plotly.` method. */ +export interface ApiMethodModule { + /** Discriminator: API method module. */ + moduleType: 'apiMethod'; + /** Name under which the function is exposed on `Plotly`. */ + name: string; + /** Implementation function. */ + fn: any; +} + +/** Union of all module descriptors accepted by `Plotly.register`. */ +export type PlotlyModule = RegisterTraceModule | LocaleModule | RegisterComponentModule | ApiMethodModule; + +// --------------------------------------------------------------------------- +// Validation +// --------------------------------------------------------------------------- + +/** Validation issue returned by `Plotly.validate`. */ +export interface ValidateResult { + /** Issue code (e.g. `'invisible'`, `'unused'`). */ + code: string; + /** Which container the issue is in. */ + container: 'data' | 'layout'; + /** Index into `data` (or `null` for layout issues). */ + trace: number | null; + /** Path components leading to the offending attribute. */ + path: string | (string | number)[]; + /** Dot-joined attribute path string. */ + astr: string; + /** Human-readable description of the issue. */ + msg: string; +} + +/** Validation issue returned by `Plotly.validateTemplate`. */ +export interface ValidateTemplateResult { + /** Issue code. */ + code: string; + /** Index of the offending template entry. */ + index?: number; + /** Trace type of the offending entry. */ + traceType?: string; + /** Count of matching template entries. */ + templateCount?: number; + /** Count of matching data entries. */ + dataCount?: number; + /** Attribute path string. */ + path?: string; + /** `templateitemname` value involved in the issue. */ + templateitemname?: string; + /** Human-readable description of the issue. */ + msg: string; +} + +// --------------------------------------------------------------------------- +// Function declarations +// --------------------------------------------------------------------------- + +/** + * Create a new plot at `root`. Replaces any existing plot. + * + * @param root - graph div id or element + * @param data - trace data array + * @param layout - layout overrides + * @param config - config overrides + * @returns the graph div once the plot has rendered + */ +export function newPlot( + root: Root, + data: Data[], + layout?: Partial, + config?: Partial +): Promise; +/** + * Create a new plot at `root` from a figure-shaped object containing + * `data`/`layout`/`config`/`frames`. Replaces any existing plot. + * + * @param root - graph div id or element + * @param figure - figure-shaped object + * @returns the graph div once the plot has rendered + */ +export function newPlot( + root: Root, + figure: PlotlyDataLayoutConfig +): Promise; + +/** Update layout properties on an existing plot. */ +export function relayout(root: Root, layout: Partial): Promise; +/** Re-render the plot at `root` from its current data/layout. */ +export function redraw(root: Root): Promise; +/** Remove a plot and its event listeners from the DOM. */ +export function purge(root: Root): void; +/** + * Update trace properties (style) on the existing plot. + * + * @param aobj - update object whose keys are attribute paths + * @param traces - trace index/indices to update (defaults to all) + */ +export function restyle(root: Root, aobj: Data, traces?: number[] | number): Promise; + +/** + * Update both trace and layout properties in a single call. + * + * @param traceUpdate - per-trace updates + * @param layoutUpdate - layout updates + * @param traces - trace index/indices `traceUpdate` applies to + */ +export function update( + root: Root, + traceUpdate: Data, + layoutUpdate: Partial, + traces?: number[] | number +): Promise; + +/** + * Add one or more traces to an existing plot. + * + * @param traces - trace(s) to add + * @param newIndices - position(s) in `data` where the traces should land + */ +export function addTraces( + root: Root, + traces: Data | Data[], + newIndices?: number[] | number +): Promise; + +/** Remove trace(s) from a plot by index. */ +export function deleteTraces(root: Root, indices: number[] | number): Promise; + +/** + * Reorder existing traces. + * + * @param currentIndices - current trace indices to move + * @param newIndices - destination indices; if omitted, traces move to the end + */ +export function moveTraces( + root: Root, + currentIndices: number[] | number, + newIndices?: number[] | number +): Promise; + +/** + * Append new data points to existing traces. Honors `maxPoints` to keep a + * rolling window per trace. + */ +export function extendTraces( + root: Root, + update: Data | Data[], + indices: number | number[], + maxPoints?: number +): Promise; + +/** Like `extendTraces`, but prepends data instead of appending. */ +export function prependTraces( + root: Root, + update: Data | Data[], + indices: number | number[] +): Promise; + +/** Render the plot to a data URI or SVG string. */ +export function toImage(root: RootOrData, opts?: ToImgopts): Promise; +/** Render the plot and trigger a browser download. */ +export function downloadImage(root: RootOrData, opts: DownloadImgopts): Promise; + +/** + * Reconcile the plot's current state with the supplied figure. Comparable + * to React's reconciliation: only changed attributes are reapplied. + */ +export function react( + root: Root, + data: Data[], + layout?: Partial, + config?: Partial +): Promise; + +/** Add animation frames to the plot's frame store. */ +export function addFrames(root: Root, frames: Array>): Promise; +/** Remove frames from the plot's frame store by index. */ +export function deleteFrames(root: Root, frames: number[]): Promise; +/** Register one or more Plotly modules (trace, locale, component, or apiMethod). */ +export function register(modules: PlotlyModule | PlotlyModule[]): void; + +/** + * Animate to a frame, frame group, or sequence of frames. + * + * @param frameOrGroupNameOrFrameList - frame name, group name, or list of either + * @param opts - animation options (frame timing, transition, mode, …) + */ +export function animate( + root: Root, + frameOrGroupNameOrFrameList?: string | string[] | Partial | Array>, + opts?: Partial +): Promise; + +/** Validate a figure and return a list of issues (empty array means OK). */ +export function validate(data: Data[], layout: Partial): ValidateResult[]; +/** Apply config defaults globally to subsequently-created plots. */ +export function setPlotConfig(config: Partial): void; + +/** Figure passed to `makeTemplate`/`validateTemplate`. */ +export type TemplateFigure = Root | { data: Data[]; layout: Partial }; +/** Build a `Template` object from a representative figure. */ +export function makeTemplate(figure: TemplateFigure): Template; +/** Check whether `template` is correctly applied to `figure`. */ +export function validateTemplate(figure: TemplateFigure, template: Template): ValidateTemplateResult[]; diff --git a/src/types/core/config.d.ts b/src/types/core/config.d.ts new file mode 100644 index 00000000000..5d8e57e63c0 --- /dev/null +++ b/src/types/core/config.d.ts @@ -0,0 +1,97 @@ +/** + * Config types + * + * `Config` is built by overlaying a small hand-written interface on top of + * the schema-derived `ConfigBase`. Most fields come straight from the + * schema; the overrides cover seven fields whose schema `valType` is `any` + * because the underlying JS attribute accepts a function value, an + * arbitrary-key map, or a structure too irregular for the schema to model. + */ + +import type { ConfigBase, Edits } from '../generated/schema'; +import type { PlotlyHTMLElement } from './events'; +import type { ModeBarButtonAny, ModeBarDefaultButtons } from './layout'; + +export type { Edits }; + +// --------------------------------------------------------------------------- +// Image export options +// --------------------------------------------------------------------------- + +/** + * Options for `Plotly.toImage`. The graph is rendered to a string suitable + * for use as a data URI or as raw SVG markup. + */ +export interface ToImgopts { + /** Output image format. */ + format: 'jpeg' | 'png' | 'webp' | 'svg'; + /** If null, uses current graph width */ + width: number | null; + /** If null, uses current graph height */ + height: number | null; + /** Resolution multiplier for raster formats. */ + scale?: number | undefined; +} + +/** + * Options for `Plotly.downloadImage`. Like `ToImgopts`, but also requires + * a `filename` because the result is saved to disk by the browser. + */ +export interface DownloadImgopts { + /** Output image format. */ + format: 'jpeg' | 'png' | 'webp' | 'svg'; + /** Output width in pixels. */ + width: number | null; + /** Output height in pixels. */ + height: number | null; + /** Filename used for the downloaded file (no extension required). */ + filename: string; +} + +/** + * Static defaults applied to the mode-bar "download image" button. Set + * via `config.toImageButtonOptions`. + */ +export interface ToImageButtonOptions { + /** Output image format. */ + format?: 'png' | 'svg' | 'jpeg' | 'webp'; + /** Downloaded filename. */ + filename?: string; + /** Output height in pixels. */ + height?: number; + /** Output width in pixels. */ + width?: number; + /** Resolution multiplier for raster formats. */ + scale?: number; +} + +// --------------------------------------------------------------------------- +// Config — hybrid (schema-derived + hand-written overrides) +// --------------------------------------------------------------------------- + +/** + * Hand-written overrides for the six `schema.config` fields whose + * `valType` is `any`. These accept functions or arbitrary-key maps that the + * JSON schema fundamentally cannot describe, so they stay typed by hand. + */ +interface ConfigOverrides { + /** Override the background color: a static color name, or a function called per-render. */ + setBackground?: 'opaque' | 'transparent' | ((gd: PlotlyHTMLElement, bgColor: string) => void); + /** Define fully custom mode bar buttons as nested array of button groups. */ + modeBarButtons?: ModeBarButtonAny[][] | false; + /** Add mode bar buttons using config objects or default-button names. */ + modeBarButtonsToAdd?: ModeBarButtonAny[]; + /** Remove mode bar buttons by name. */ + modeBarButtonsToRemove?: ModeBarDefaultButtons[]; + /** Statically override options for the toImage mode bar button. */ + toImageButtonOptions?: ToImageButtonOptions; + /** Localization definitions keyed by locale id (e.g. `'en-US'`, `'fr'`). */ + locales?: Record; format?: Record }>; +} + +/** + * Full plot config. Combines `ConfigBase` (schema-derived) with the + * hand-written `ConfigOverrides` so the hand-written entries replace the + * loosely-typed `any` versions from the schema. + */ +export type Config = Omit & ConfigOverrides; diff --git a/src/types/core/data.internal.d.ts b/src/types/core/data.internal.d.ts new file mode 100644 index 00000000000..10e9036c72f --- /dev/null +++ b/src/types/core/data.internal.d.ts @@ -0,0 +1,68 @@ +/** + * Internal data/trace types (not in public API) + * + * These are runtime-resolved versions of trace data with internal state + * properties. For public trace types, see data.d.ts. + */ + +import type { Datum } from '../lib/common'; +import type { Data } from './data'; + +/** + * Calculated trace data (internal). + * + * Per-trace `calcdata` entries produced during the calc step. The shape is + * loose because each trace module attaches its own bookkeeping fields. + */ +export interface CalcData { + /** Original index in the user-supplied data array. */ + i?: number; + /** Trace-specific transient bag — shape varies by trace module. */ + t?: any; + /** Back-reference to the fully-populated trace this calcdata belongs to. */ + trace?: FullData; + /** Computed x coordinate(s). */ + x?: Datum | Datum[]; + /** Computed y coordinate(s). */ + y?: Datum | Datum[]; + /** Computed z coordinate(s) (for 3-D traces). */ + z?: Datum | Datum[]; + /** Trace-module-specific calc fields. */ + [key: string]: any; +} + +/** + * Internal `_`-prefixed fields added to traces during defaults supply. + * Combined with the user-facing trace shape via `FullData`. Not exported — + * internal helpers should use `FullData` rather than this directly. + */ +interface FullDataInternals { + /** Names of attributes whose values are data arrays (used for hover/event data). */ + _arrayAttrs?: string[]; + /** Cached extremes (per axis) for autorange computation. */ + _extremes?: Record; + /** Original user-supplied trace object (pre-defaults). */ + _input?: Data; + /** Length of the trace's data arrays (after coercion). */ + _length?: number; + /** Captured `meta` references from trace and layout for template binding. */ + _meta?: { meta?: any; layout?: { meta?: any } }; + /** Reference to the trace module that handles this trace type. */ + _module?: any; + /** Resolved template entry applied to this trace, if any. */ + _template?: any; + /** Public trace index (also exposed to users on PlotData). */ + index?: number; + /** Other internal fields written by trace modules. */ + [key: string]: any; +} + +/** + * Fully processed plot data with defaults applied (internal use). + * + * `FullData` is the `Data` discriminated union intersected with internal state. + * That means narrowing on `trace.type` gives you the right trace-specific + * fields (`if (trace.type === 'bar') trace.marker?.cornerradius`) while + * `_`-prefixed internal fields are always accessible. + */ +export type FullData = Data & FullDataInternals; diff --git a/src/types/core/events.d.ts b/src/types/core/events.d.ts new file mode 100644 index 00000000000..9355d47f2e5 --- /dev/null +++ b/src/types/core/events.d.ts @@ -0,0 +1,435 @@ +/** + * Event types + * + * Plotly event payloads, the typed `on()` overloads on PlotlyHTMLElement, + * and event-related supporting types. + */ + +import type { + AnimationFrameOpts, + Annotation, + Data, + Frame, + Layout, + LayoutAxis, + Slider, + Transition, +} from '../generated/schema'; +import type { Datum } from '../lib/common'; +import type { Config } from './config'; + +// --------------------------------------------------------------------------- +// Point / datum types in events +// --------------------------------------------------------------------------- + +/** + * Numeric point payload returned by some scatter events that only carry + * coordinate values (no `Datum` widening, no `customdata`). + */ +export interface PlotScatterDataPoint { + /** Index of the trace producing this point. */ + curveNumber: number; + /** The trace this point belongs to. */ + data: Data; + /** Index of the point within the trace's data arrays. */ + pointIndex: number; + /** Point index after transforms (often equals `pointIndex`). */ + pointNumber: number; + /** Numeric x coordinate. */ + x: number; + /** Axis the point's x is plotted against. */ + xaxis: LayoutAxis; + /** Numeric y coordinate. */ + y: number; + /** Axis the point's y is plotted against. */ + yaxis: LayoutAxis; +} + +/** + * General point payload used by click/hover/selection events. Coordinates + * are `Datum` because they may be strings, dates, or null in addition to + * numbers. + */ +export interface PlotDatum { + /** Index of the trace producing this point. */ + curveNumber: number; + /** The trace this point belongs to. */ + data: Data; + /** User-supplied `customdata` entry for this point. */ + customdata: Datum; + /** Index of the point within the trace's data arrays. */ + pointIndex: number; + /** Point index after transforms (often equals `pointIndex`). */ + pointNumber: number; + /** x coordinate of the point. */ + x: Datum; + /** Axis the point's x is plotted against. */ + xaxis: LayoutAxis; + /** y coordinate of the point. */ + y: Datum; + /** Axis the point's y is plotted against. */ + yaxis: LayoutAxis; + /** Resolved hover/display text for the point. */ + text: string; +} + +/** A 2-D coordinate plus point identifier, used by lasso/select shapes. */ +export interface PlotCoordinate { + /** x coordinate. */ + x: number; + /** y coordinate. */ + y: number; + /** Index of the point within its trace. */ + pointNumber: number; +} + +/** Rectangular selection range in axis coordinates. */ +export interface SelectionRange { + /** `[xmin, xmax]`. */ + x: number[]; + /** `[ymin, ymax]`. */ + y: number[]; +} + +/** Snapshot of a single point in a selection — all `PlotDatum` fields optional. */ +export type PlotSelectedData = Partial; + +// --------------------------------------------------------------------------- +// Mouse / hover / selection events +// --------------------------------------------------------------------------- + +/** Payload for `plotly_click` and `plotly_unhover` events. */ +export interface PlotMouseEvent { + /** Points under the cursor at the moment of the event. */ + points: PlotDatum[]; + /** The original DOM mouse event. */ + event: MouseEvent; +} + +/** Payload for `plotly_hover` — augments `PlotMouseEvent` with axis values. */ +export interface PlotHoverEvent extends PlotMouseEvent { + /** x values at the hover location, one per active axis. */ + xvals: Datum[]; + /** y values at the hover location, one per active axis. */ + yvals: Datum[]; +} + +/** Payload for `plotly_selected` / `plotly_selecting`. */ +export interface PlotSelectionEvent { + /** Points inside the selection region. */ + points: PlotDatum[]; + /** Rectangular range for box selection, when applicable. */ + range?: SelectionRange | undefined; + /** Lasso polygon points, when applicable. */ + lassoPoints?: SelectionRange | undefined; +} + +// --------------------------------------------------------------------------- +// Restyle / Relayout events +// --------------------------------------------------------------------------- + +/** + * `update` object emitted by `plotly_restyle`. Keys are attribute paths + * (e.g. `'marker.color'`) and values are the new values being applied. + */ +export interface PlotRestyleEventUpdate { + /** Attribute path → new value(s). */ + [key: string]: any; +} + +/** Tuple emitted by `plotly_restyle`: the update object and the affected trace indices. */ +export type PlotRestyleEvent = [PlotRestyleEventUpdate, number[]]; + +/** + * Payload for `plotly_relayout`. Carries a `Partial` plus a few + * common bracketed axis-range/autorange keys that flatten nested updates. + */ +export interface PlotRelayoutEvent extends Partial { + /** New x-axis range minimum, when the user changed the range. */ + 'xaxis.range[0]'?: number; + /** New x-axis range maximum, when the user changed the range. */ + 'xaxis.range[1]'?: number; + /** New y-axis range minimum, when the user changed the range. */ + 'yaxis.range[0]'?: number; + /** New y-axis range maximum, when the user changed the range. */ + 'yaxis.range[1]'?: number; + /** True when the user toggled x-axis autoranging on. */ + 'xaxis.autorange'?: boolean; + /** True when the user toggled y-axis autoranging on. */ + 'yaxis.autorange'?: boolean; +} + +// --------------------------------------------------------------------------- +// 3D scene / annotation / animation / legend events +// --------------------------------------------------------------------------- + +/** Local 3-D coordinate triple used by `PlotScene`. */ +interface Point { + /** x coordinate. */ + x: number; + /** y coordinate. */ + y: number; + /** z coordinate. */ + z: number; +} + +/** Camera state of a 3-D scene (Plotly.js scene). */ +export interface PlotScene { + /** Point the camera is looking at. */ + center: Point; + /** Position of the camera. */ + eye: Point; + /** Up direction of the camera. */ + up: Point; +} + +/** Payload for `plotly_clickannotation`. */ +export interface ClickAnnotationEvent { + /** Index of the annotation in `layout.annotations`. */ + index: number; + /** User-supplied annotation object. */ + annotation: Annotation; + /** Fully-resolved annotation with defaults applied. */ + fullAnnotation: Annotation; + /** The original DOM mouse event. */ + event: MouseEvent; +} + +/** Payload for `plotly_animatingframe`, emitted as each frame is rendered. */ +export interface FrameAnimationEvent { + /** Name of the active frame. */ + name: string; + /** The frame being animated. */ + frame: Frame; + /** Animation options applied for this frame. */ + animation: { + /** Per-frame animation options (duration, redraw, etc.). */ + frame: AnimationFrameOpts; + /** Transition options (duration, easing). */ + transition: Transition; + }; +} + +/** + * Payload for `plotly_legendclick` and `plotly_legenddoubleclick`. Return + * `false` from the handler to suppress Plotly's default toggle behavior. + */ +export interface LegendClickEvent { + /** The original DOM mouse event. */ + event: MouseEvent; + /** The graph div element. */ + node: PlotlyHTMLElement; + /** Trace index for the legend entry. */ + curveNumber: number; + /** Expanded trace index (after array attribute expansion). */ + expandedIndex: number; + /** User-supplied data array. */ + data: Data[]; + /** User-supplied layout object. */ + layout: Partial; + /** All animation frames defined on the graph. */ + frames: Frame[]; + /** User-supplied config object. */ + config: Partial; + /** Fully-resolved data array (defaults applied). */ + fullData: Data[]; + /** Fully-resolved layout object (defaults applied). */ + fullLayout: Partial; +} + +// --------------------------------------------------------------------------- +// Slider events +// --------------------------------------------------------------------------- + +/** Convenience alias for a single step entry on a `Slider`. */ +type SliderStep = NonNullable[number]; + +/** Payload for `plotly_sliderchange`, fired when the active step changes. */ +export interface SliderChangeEvent { + /** The slider whose state changed. */ + slider: Slider; + /** The newly-active step. */ + step: SliderStep; + /** True when triggered by user interaction (vs. programmatic). */ + interaction: boolean; + /** Index of the previously-active step. */ + previousActive: number; +} + +/** Payload for `plotly_sliderstart`, fired when slider interaction begins. */ +export interface SliderStartEvent { + /** The slider being interacted with. */ + slider: Slider; +} + +/** Payload for `plotly_sliderend`, fired when slider interaction ends. */ +export interface SliderEndEvent { + /** The slider being interacted with. */ + slider: Slider; + /** The step at which interaction ended. */ + step: SliderStep; +} + +// --------------------------------------------------------------------------- +// Sunburst / before-plot +// --------------------------------------------------------------------------- + +/** Point payload for `plotly_sunburstclick`. */ +export interface SunburstPlotDatum { + /** Color value associated with the sector. */ + color: number; + /** Index of the trace producing this sector. */ + curveNumber: number; + /** The trace this sector belongs to. */ + data: Data; + /** Entry sector id (the entry point of the sunburst hierarchy). */ + entry: string; + /** Fully-resolved trace data. */ + fullData: Data; + /** Hover text shown for this sector. */ + hovertext: string; + /** Hierarchical id of the sector. */ + id: string; + /** Display label of the sector. */ + label: string; + /** Parent sector id. */ + parent: string; + /** Percentage of the immediate entry sector this sector represents. */ + percentEntry: number; + /** Percentage of the parent sector this sector represents. */ + percentParent: number; + /** Percentage of the root sector this sector represents. */ + percentRoot: number; + /** Index of the sector within the trace. */ + pointNumber: number; + /** Root sector id. */ + root: string; + /** Numeric value of the sector. */ + value: number; +} + +/** Payload for `plotly_sunburstclick`, including the next-level entry. */ +export interface SunburstClickEvent { + /** The original DOM mouse event. */ + event: MouseEvent; + /** Sector id that becomes the entry on click. */ + nextLevel: string; + /** Clicked sector(s). */ + points: SunburstPlotDatum[]; +} + +/** + * Payload for `plotly_beforeplot`. Returning `false` from the handler + * cancels the plot operation. + */ +export interface BeforePlotEvent { + /** Data array about to be plotted. */ + data: Data[]; + /** Layout about to be applied. */ + layout: Partial; + /** Config about to be applied. */ + config: Partial; +} + +// --------------------------------------------------------------------------- +// PlotlyHTMLElement +// --------------------------------------------------------------------------- + +/** + * The graph div returned by `Plotly.newPlot` and friends. Extends + * `HTMLElement` with Plotly-specific event subscriptions, the resolved + * data/layout, and lifecycle helpers. + */ +export interface PlotlyHTMLElement extends HTMLElement { + /** Subscribe to click or unhover events. */ + on(event: 'plotly_click' | 'plotly_unhover', callback: (event: PlotMouseEvent) => void): void; + /** Subscribe to hover events. */ + on(event: 'plotly_hover', callback: (event: PlotHoverEvent) => void): void; + /** Subscribe to selection events (in-progress and finalized). */ + on(event: 'plotly_selecting' | 'plotly_selected', callback: (event: PlotSelectionEvent) => void): void; + /** Subscribe to restyle events (trace attribute updates). */ + on(event: 'plotly_restyle', callback: (data: PlotRestyleEvent) => void): void; + /** Subscribe to relayout events (layout updates, including in-progress). */ + on(event: 'plotly_relayout' | 'plotly_relayouting', callback: (event: PlotRelayoutEvent) => void): void; + /** Subscribe to annotation click events. */ + on(event: 'plotly_clickannotation', callback: (event: ClickAnnotationEvent) => void): void; + /** Subscribe to per-frame animation events. */ + on(event: 'plotly_animatingframe', callback: (event: FrameAnimationEvent) => void): void; + /** Subscribe to legend click events; return `false` to suppress default toggle. */ + on(event: 'plotly_legendclick' | 'plotly_legenddoubleclick', callback: (event: LegendClickEvent) => boolean): void; + /** Subscribe to slider change events. */ + on(event: 'plotly_sliderchange', callback: (event: SliderChangeEvent) => void): void; + /** Subscribe to slider end-of-interaction events. */ + on(event: 'plotly_sliderend', callback: (event: SliderEndEvent) => void): void; + /** Subscribe to slider start-of-interaction events. */ + on(event: 'plotly_sliderstart', callback: (event: SliderStartEvent) => void): void; + /** Subscribe to sunburst sector click events. */ + on(event: 'plotly_sunburstclick', callback: (event: SunburstClickEvent) => void): void; + /** Subscribe to generic plotly events (low-level catch-all). */ + on(event: 'plotly_event', callback: (data: any) => void): void; + /** Subscribe to pre-plot events; return `false` to cancel plotting. */ + on(event: 'plotly_beforeplot', callback: (event: BeforePlotEvent) => boolean): void; + /** Subscribe to bare lifecycle events that carry no payload. */ + on( + event: + | 'plotly_afterexport' + | 'plotly_afterplot' + | 'plotly_animated' + | 'plotly_animationinterrupted' + | 'plotly_autosize' + | 'plotly_beforeexport' + | 'plotly_deselect' + | 'plotly_doubleclick' + | 'plotly_framework' + | 'plotly_redraw' + | 'plotly_transitioning' + | 'plotly_transitioninterrupted', + callback: () => void + ): void; + /** Remove all listeners for the named event. */ + removeAllListeners: (handler: string) => void; + /** Resolved data array currently rendered on the graph. */ + data: Data[]; + /** Resolved layout currently applied to the graph. */ + layout: Layout; +} + +// --------------------------------------------------------------------------- +// Event name union (kept for convenience) +// --------------------------------------------------------------------------- + +/** Union of every plotly event name. Use to constrain `event` parameters. */ +export type PlotlyEventName = + | 'plotly_afterexport' + | 'plotly_afterplot' + | 'plotly_animated' + | 'plotly_animatingframe' + | 'plotly_animationinterrupted' + | 'plotly_autosize' + | 'plotly_beforeexport' + | 'plotly_beforehover' + | 'plotly_beforeplot' + | 'plotly_buttonclicked' + | 'plotly_click' + | 'plotly_clickannotation' + | 'plotly_deselect' + | 'plotly_doubleclick' + | 'plotly_framework' + | 'plotly_hover' + | 'plotly_legendclick' + | 'plotly_legenddoubleclick' + | 'plotly_redraw' + | 'plotly_relayout' + | 'plotly_relayouting' + | 'plotly_restyle' + | 'plotly_selected' + | 'plotly_selecting' + | 'plotly_sliderchange' + | 'plotly_sliderend' + | 'plotly_sliderstart' + | 'plotly_sunburstclick' + | 'plotly_transitioning' + | 'plotly_transitioninterrupted' + | 'plotly_treemapclick' + | 'plotly_unhover' + | 'plotly_webglcontextlost'; diff --git a/src/types/core/graph-div.internal.d.ts b/src/types/core/graph-div.internal.d.ts new file mode 100644 index 00000000000..4c621c8bad7 --- /dev/null +++ b/src/types/core/graph-div.internal.d.ts @@ -0,0 +1,61 @@ +/** + * Internal GraphDiv types (not in public API) + * + * The `gd` parameter appears throughout the codebase and represents + * the graph div element with plotly-specific properties attached. + * Commonly referred to as `gd` in the codebase. + */ + +import type { Data, Layout } from '../generated/schema'; +import type { Config } from './config'; +import type { CalcData, FullData } from './data.internal'; +import type { FullLayout } from './layout.internal'; + +/** + * Graph context containing environment info (mirrors Config for internal storage). + * + * Stored on `gd._context`. Mostly the resolved `Config`, but the index + * signature allows trace modules and components to stash module-specific + * runtime state alongside the user-visible config. + */ +export interface GraphContext extends Partial { + /** Module-specific runtime state attached to the context. */ + [key: string]: any; +} + +/** + * The main graph div element that Plotly operates on. + * This is an HTMLDivElement with additional Plotly-specific properties. + */ +export interface GraphDiv extends HTMLDivElement { + /** Resolved configuration plus internal context. */ + _context?: GraphContext; + /** True while an inline edit is in progress (e.g. axis title rename). */ + _editing?: boolean; + /** Trace data after defaults are applied. */ + _fullData?: FullData[]; + /** Layout after defaults are applied. */ + _fullLayout?: FullLayout; + /** Most recent hover payloads (used to deduplicate hover events). */ + _hoverdata?: any[]; + /** True once `Plotly.plot`/`newPlot` has run at least once. */ + _initialized?: boolean; + /** Outstanding async operations the next call must await. */ + _promises?: Promise[]; + /** Transient state used during transitions and animations. */ + _transitionData?: any; + /** True while a transition/animation is running. */ + _transitioning?: boolean; + /** Per-subplot, per-trace `calcdata` arrays produced by the calc step. */ + calcdata?: CalcData[][]; + /** User-supplied config object. */ + config?: Partial; + /** User-supplied data array. */ + data?: Data[]; + /** Plotly event emitter; bound to `EventEmitter` once initialized. */ + emit?: (event: string, ...args: any[]) => void; + /** User-supplied layout object. */ + layout?: Partial; + /** Misc plotly-internal properties (module bookkeeping, caches, etc.). */ + [key: string]: any; +} diff --git a/src/types/core/layout.d.ts b/src/types/core/layout.d.ts new file mode 100644 index 00000000000..bc25d3354ae --- /dev/null +++ b/src/types/core/layout.d.ts @@ -0,0 +1,154 @@ +/** + * Layout types — hand-written supplements + * + * Schema-derived types (Layout, LayoutAxis, Legend, Scene, Shape, Annotation, + * etc.) are generated into src/types/generated/schema.d.ts by + * tasks/generate_schema_types.mjs. This file contains only types the schema + * cannot express: internal runtime state, behavioral/event types, template + * literal utilities, and deprecated aliases. + */ + +import type { Data, Layout, TraceType } from '../generated/schema'; +import type { PlotlyHTMLElement } from './events'; + +// --------------------------------------------------------------------------- +// Axis name types (template literal utilities — not in schema) +// --------------------------------------------------------------------------- + +/** + * Numeric axis suffix plus the optional ` domain` qualifier. The suffix is + * empty for the first axis (`x` / `y`) and `2` through `99` otherwise. + */ +type xYAxisNames = `${ + | '' + | `${2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}` + | `${1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}${0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}`}${'' | ' domain'}`; + +/** Any valid x-axis reference: `'x'`, `'x2'`, …, `'x99'`, optionally `' domain'`. */ +export type XAxisName = `x${xYAxisNames}`; +/** Any valid y-axis reference: `'y'`, `'y2'`, …, `'y99'`, optionally `' domain'`. */ +export type YAxisName = `y${xYAxisNames}`; +/** Any valid axis reference (x or y, numbered or not, domain-qualified or not). */ +export type AxisName = XAxisName | YAxisName; + +// --------------------------------------------------------------------------- +// ModeBar / Icon (behavioral types — not in schema) +// --------------------------------------------------------------------------- + +/** + * Names of built-in mode-bar buttons. Used by `config.modeBarButtonsToAdd` + * and `config.modeBarButtonsToRemove` to reference Plotly's defaults. + */ +export type ModeBarDefaultButtons = + | 'lasso2d' + | 'select2d' + | 'sendDataToCloud' + | 'zoom2d' + | 'pan2d' + | 'zoomIn2d' + | 'zoomOut2d' + | 'autoScale2d' + | 'resetScale2d' + | 'hoverClosestCartesian' + | 'hoverCompareCartesian' + | 'zoom3d' + | 'pan3d' + | 'orbitRotation' + | 'tableRotation' + | 'handleDrag3d' + | 'resetCameraDefault3d' + | 'resetCameraLastSave3d' + | 'hoverClosest3d' + | 'zoomInGeo' + | 'zoomOutGeo' + | 'resetGeo' + | 'hoverClosestGeo' + | 'hoverClosestGl2d' + | 'hoverClosestPie' + | 'toggleHover' + | 'toImage' + | 'resetViews' + | 'toggleSpikelines' + | 'zoomInMap' + | 'zoomInMapbox' + | 'zoomOutMap' + | 'zoomOutMapbox' + | 'resetViewMap' + | 'resetViewMapbox' + | 'togglespikelines' + | 'togglehover' + | 'hovercompare' + | 'hoverclosest' + | 'v1hovermode'; + +/** Click handler signature for custom mode-bar buttons. */ +export type ButtonClickEvent = (gd: PlotlyHTMLElement, ev: MouseEvent) => void; + +/** + * SVG icon definition for a custom mode-bar button or modebar logo + * (matches the format used by Plotly's bundled icon set). + */ +export interface Icon { + /** Icon viewBox height. */ + height?: number | undefined; + /** Icon viewBox width. */ + width?: number | undefined; + /** SVG font-ascent value. */ + ascent?: number | undefined; + /** SVG font-descent value. */ + descent?: number | undefined; + /** Internal icon name (used by the bundled set). */ + name?: string | undefined; + /** SVG `path` data for a single-path icon. */ + path?: string | undefined; + /** Raw SVG markup for multi-element icons. */ + svg?: string | undefined; + /** Optional SVG `transform` applied to the icon. */ + transform?: string | undefined; +} + +/** Definition of a custom mode-bar button. */ +export interface ModeBarButton { + /** Unique identifier for this button. */ + name: string; + /** Tooltip text shown on hover. */ + title: string; + /** SVG icon — either a registered icon name or an `Icon` definition. */ + icon: string | Icon; + /** Optional gravity hint controlling button placement. */ + gravity?: string | undefined; + /** Handler invoked when the button is clicked. */ + click: ButtonClickEvent; + /** Attribute path the button toggles (paired with `val`). */ + attr?: string | undefined; + /** Value applied when the button activates (paired with `attr`). */ + val?: any; + /** When true, the button can show an active/inactive state. */ + toggle?: boolean | undefined; +} + +/** Union accepted by `config.modeBarButtons*`: a default name or a custom button. */ +export type ModeBarButtonAny = ModeBarDefaultButtons | ModeBarButton; + +// --------------------------------------------------------------------------- +// Template (circular reference — schema says `any`) +// --------------------------------------------------------------------------- + +/** + * A plot template — a partial figure (`data` and/or `layout`) that supplies + * default styling. Hand-written because the schema's `valType: 'any'` + * cannot self-reference. + */ +export interface Template { + /** Template trace defaults, keyed by trace type. */ + data?: { [type in TraceType]?: Data[] } | undefined; + /** Template layout defaults. */ + layout?: Partial | undefined; +} + +// --------------------------------------------------------------------------- +// Deprecated aliases +// --------------------------------------------------------------------------- + +/** @deprecated `Mapbox` traces are deprecated; use the unified `Map`/`MapLayout` types. */ +export type { MapLayout as Mapbox } from '../generated/schema'; diff --git a/src/types/core/layout.internal.d.ts b/src/types/core/layout.internal.d.ts new file mode 100644 index 00000000000..f28a4f0d09a --- /dev/null +++ b/src/types/core/layout.internal.d.ts @@ -0,0 +1,326 @@ +/** + * Internal layout types (not in public API) + * + * These are runtime-resolved versions of layout with internal state + * properties. For public layout types, see layout.d.ts and + * generated/schema.d.ts. + */ + +import type { Locale, Selection } from 'd3'; +import type { Layout } from '../generated/schema'; +import type { Color } from '../lib/common'; +import type { GraphDiv } from './graph-div.internal'; + +/** + * Fully processed layout with all defaults applied (internal use). + * + * Extends the public `Layout` with the `_`-prefixed bookkeeping fields the + * defaults/supply/plot pipeline attaches. Trace and component modules read + * and write these fields; users should not touch them directly. + */ +export interface FullLayout extends Layout { + // Core internal state + /** Resolved list of base-plot modules in use (cartesian, polar, …). */ + _basePlotModules?: any[]; + /** Recomputes inverse-transform caches after a transform change. */ + _calcInverseTransform?: (gd: GraphDiv) => void; + /** True once initial autosize has completed at least once. */ + _initialAutoSizeIsDone?: boolean; + /** Cached inverse CSS transform for hit-testing. */ + _invTransform?: any; + /** Names of legend containers present in the layout. */ + _legends?: string[]; + /** Captured `meta` references for template binding. */ + _meta?: { meta?: any; layout?: { meta?: any } }; + /** Resolved list of trace modules in use. */ + _modules?: any[]; + /** Map of subplot id → subplot object (cartesian/3D/geo/…). */ + _plots?: { [key: string]: any }; + /** Accumulated margin pushes from components like colorbars. */ + _pushmargin?: { [key: string]: any }; + /** Resolved plot area dimensions and margins. */ + _size?: LayoutSize; + /** Grouping of subplot ids by family (cartesian, polar, …). */ + _subplots?: SubplotInfo; + /** Resolved template applied to this layout. */ + _template?: any; + /** Unique identifier for this layout instance. */ + _uid?: string; + + // SVG layers + /** Background-layer selection. */ + _bgLayer?: Selection; + /** Cartesian subplot layer selection. */ + _cartesianlayer?: Selection; + /** Clip-path defs selection. */ + _clips?: Selection; + /** Top-level container selection (the graph div's inner wrapper). */ + _container?: Selection; + /** SVG `` selection. */ + _defs?: Selection; + /** Drag-cover overlay used during interactions. */ + _dragCover?: Selection; + /** Drag handle layer selection. */ + _draggers?: Selection; + /** Funnel-area subplot layer selection. */ + _funnelarealayer?: Selection; + /** Geo subplot layer selection. */ + _geolayer?: Selection; + /** WebGL canvas selection. */ + _glcanvas?: Selection; + /** WebGL container selection. */ + _glcontainer?: Selection; + /** WebGL image overlay selection. */ + _glimages?: Selection; + /** Icicle subplot layer selection. */ + _iciclelayer?: Selection; + /** Lower-layer images selection. */ + _imageLowerLayer?: Selection; + /** Upper-layer images selection. */ + _imageUpperLayer?: Selection; + /** Indicator subplot layer selection. */ + _indicatorlayer?: Selection; + /** Info layer (annotations, titles, etc.) selection. */ + _infolayer?: Selection; + /** Menu (updatemenu) layer selection. */ + _menulayer?: Selection; + /** Mode-bar container div selection. */ + _modebardiv?: Selection; + /** Root SVG paper selection. */ + _paper?: Selection; + /** Paper-div selection (the container holding `_paper`). */ + _paperdiv?: Selection; + /** Pie subplot layer selection. */ + _pielayer?: Selection; + /** Polar subplot layer selection. */ + _polarlayer?: Selection; + /** Selection-overlay layer. */ + _selectionLayer?: Selection; + /** Lower shapes layer selection. */ + _shapeLowerLayer?: Selection; + /** Upper shapes layer selection. */ + _shapeUpperLayer?: Selection; + /** Smith subplot layer selection. */ + _smithlayer?: Selection; + /** Sunburst subplot layer selection. */ + _sunburstlayer?: Selection; + /** Ternary subplot layer selection. */ + _ternarylayer?: Selection; + /** Top-level defs selection (rendered on top of `_paper`). */ + _topdefs?: Selection; + /** Top-level clip-path defs selection. */ + _topclips?: Selection; + /** Top-paper SVG selection (overlay layer). */ + _toppaper?: Selection; + /** Treemap subplot layer selection. */ + _treemaplayer?: Selection; + /** Zoom-box overlay selection. */ + _zoomlayer?: Selection; + + // Hover state + /** Hover-label SVG layer selection. */ + _hoverlayer?: Selection; + /** Hover paper selection (separate from the main paper for overlays). */ + _hoverpaper?: Selection; + /** Subplot id currently showing hover labels. */ + _hoversubplot?: string | null; + /** Selection of the last-rendered hover label group. */ + _lasthover?: Selection | null; + /** Callback to redo the most recent hover (used after resize/relayout). */ + _rehover?: (() => void) | null; + + // Modebar + /** Active mode-bar instance. */ + _modeBar?: any; + + // Cross-trace computation state + /** Bar/box alignment options keyed by axis pair. */ + _alignmentOpts?: Record; + /** Groups of axes joined by `constrain` settings. */ + _axisConstraintGroups?: any[]; + /** Groups of axes joined by `matches` settings. */ + _axisMatchGroups?: any[]; + /** Resolved coloraxis containers keyed by id. */ + _colorAxes?: Record; + /** Trace-defaults derived from the active template. */ + _dataTemplate?: Record; + /** Extra d3-format specifiers from layout/trace settings. */ + _extraFormat?: Record; + /** First scatter trace per subplot (used for hover styling). */ + _firstScatter?: Record; + /** Funnelarea color map keyed by label. */ + _funnelareacolormap?: Record; + /** Shared histogram-binning options across stacked traces. */ + _histogramBinOpts?: Record; + /** Icicle color map keyed by id. */ + _iciclecolormap?: Record; + /** Number of box traces currently visible. */ + _numBoxes?: number; + /** Number of violin traces currently visible. */ + _numViolins?: number; + /** Pie color map keyed by label. */ + _piecolormap?: Record; + /** Resolved range-slider trace data. */ + _rangeSliderData?: any[]; + /** Axis ids that have requested a range slider. */ + _requestRangeslider?: Record; + /** Numeric-rounding options keyed by axis. */ + _roundFnOpts?: Record; + /** Scatter stacking groups keyed by stackgroup id. */ + _scatterStackOpts?: Record; + /** Splom axes resolved by direction. */ + _splomAxes?: { x: Record; y: Record }; + /** Splom shared grid renderer. */ + _splomGrid?: any; + /** Default splom grid options. */ + _splomGridDflt?: Record; + /** Splom WebGL scenes keyed by subplot. */ + _splomScenes?: Record; + /** Splom subplot lookup. */ + _splomSubplots?: Record; + /** Sunburst color map keyed by id. */ + _sunburstcolormap?: Record; + /** Resolved list of transform modules in use. */ + _transformModules?: any[]; + /** Treemap color map keyed by id. */ + _treemapcolormap?: Record; + /** Violin scale-group statistics keyed by group id. */ + _violinScaleGroupStats?: Record; + /** Trace modules that are visible after applying `visible`. */ + _visibleModules?: any[]; + + // Scalar flags and values + /** Whether cartesian spikelines are currently active. */ + _cartesianSpikesEnabled?: 'on' | 'off'; + /** Name of the currently-active animation frame. */ + _currentFrame?: string; + /** Active d3 locale for number/date formatting. */ + _d3locale?: Locale; + /** Total number of data points across traces. */ + _dataLength?: number; + /** Whether scroll-zoom is enabled by config. */ + _enablescrollzoom?: boolean; + /** Default titles keyed by container (axis title fallback, etc.). */ + _dfltTitle?: Record; + /** True while a GUI-driven edit (chart-studio) is happening. */ + _guiEditing?: boolean; + /** Predicate checking whether a category (`'cartesian'`, `'gl3d'`, …) is active. */ + _has?: (category: string) => boolean; + /** Optimization flag: only large splom traces present. */ + _hasOnlyLargeSploms?: boolean; + /** Inside-tick-label range overrides keyed by axis. */ + _insideTickLabelsUpdaterange?: Record; + /** Inverse horizontal scale factor for CSS transforms. */ + _invScaleX?: number; + /** Inverse vertical scale factor for CSS transforms. */ + _invScaleY?: number; + /** Most recent bounding box of the graph div. */ + _lastBBox?: DOMRect; + /** Mapbox access token captured from config. */ + _mapboxAccessToken?: string; + /** Push-margin ids keyed by component path. */ + _pushmarginIds?: Record; + /** Counter to prevent infinite auto-margin redraw loops. */ + _redrawFromAutoMarginCount?: number; + /** True while a relayout/replot is in progress. */ + _replotting?: boolean; + /** Reserved margin pixels per side. */ + _reservedMargin?: Record; + /** Whether the background layer needs to be (re)created. */ + _shouldCreateBgLayer?: boolean; + /** Skip the defaults step (used by certain test/edit paths). */ + _skipDefaults?: boolean; + /** Stable unique ids for each trace. */ + _traceUids?: string[]; + /** Localized noun for "trace" (used in default titles). */ + _traceWord?: string; + /** Z-index ordering of subplot layers. */ + _zindices?: number[]; + + // Interaction state + /** Index of the active selection in `layout.selections`. */ + _activeSelectionIndex?: number; + /** Index of the active shape in `layout.shapes`. */ + _activeShapeIndex?: number; + /** Callback to deactivate the active selection. */ + _deactivateSelection?: (gd: GraphDiv) => void; + /** Callback to deactivate the active shape. */ + _deactivateShape?: (gd: GraphDiv) => void; + /** Cached deselect callback. */ + _deselect?: any; + /** Vertical offset for colorbar title repositioning. */ + _hColorbarMoveCBTitle?: number; + /** Vertical offset for colorbar move title. */ + _hColorbarMoveTitle?: number; + /** Subplot id of the last selection interaction. */ + _lastSelectedSubplot?: string; + /** Suppress emitting `plotly_selected` at the start of selection. */ + _noEmitSelectedAtStart?: boolean; + /** True while a draw outline is being rendered (lasso/select). */ + _outlining?: boolean; + /** Pre-GUI state snapshot for undo support. */ + _preGUI?: Record; + /** Previous selection snapshots for restoration. */ + _previousSelections?: any[]; + /** Callback to redo the most recent drag. */ + _redrag?: (() => void) | null; + /** Callback to redo the most recent selection. */ + _reselect?: (() => void) | null; + /** Per-trace pre-GUI state snapshot. */ + _tracePreGUI?: Record>; + + /** Other internal fields written by trace modules. */ + [key: string]: any; +} + +/** + * Layout size information (internal). + * + * Pixel dimensions of the plot area and its margins. Single-letter field + * names match the historical Plotly internal convention. + */ +export interface LayoutSize { + /** Bottom margin (px). */ + b: number; + /** Plot-area height (px). */ + h: number; + /** Left margin (px). */ + l: number; + /** Pad (px) — additional inside-edge spacing. */ + p: number; + /** Right margin (px). */ + r: number; + /** Top margin (px). */ + t: number; + /** Plot-area width (px). */ + w: number; +} + +/** + * Subplot information (internal). + * + * Lists subplot identifiers per subplot family. The catch-all index + * signature accommodates additional families added by trace modules. + */ +export interface SubplotInfo { + /** Additional subplot families keyed by name. */ + [key: string]: string[] | undefined; + /** Cartesian subplot ids (e.g. `'xy'`, `'x2y2'`). */ + cartesian?: string[]; + /** Geo subplot ids. */ + geo?: string[]; + /** GL2D subplot ids. */ + gl2d?: string[]; + /** Map subplot ids. */ + map?: string[]; + /** Mapbox subplot ids (deprecated alias of `map`). */ + mapbox?: string[]; + /** Pie subplot ids. */ + pie?: string[]; + /** Polar subplot ids. */ + polar?: string[]; + /** Sankey subplot ids. */ + sankey?: string[]; + /** Ternary subplot ids. */ + ternary?: string[]; +} diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts new file mode 100644 index 00000000000..f5899ed7064 --- /dev/null +++ b/src/types/generated/schema.d.ts @@ -0,0 +1,17122 @@ +/** + * Generated from plot-schema.json by tasks/generate_schema_types.mjs. + * Do not edit by hand — run `npm run schema` to regenerate. + */ + +import type { Color, ColorScale, Datum, MarkerSymbol, TypedArray } from '../lib/common'; + +// --------------------------------------------------------------------------- +// Common enum types — value sets discovered from the schema +// --------------------------------------------------------------------------- + +export type Calendar = 'chinese' | 'coptic' | 'discworld' | 'ethiopian' | 'gregorian' | 'hebrew' | 'islamic' | 'jalali' | 'julian' | 'mayan' | 'nanakshahi' | 'nepali' | 'persian' | 'taiwan' | 'thai' | 'ummalqura'; + +export type Dash = 'dash' | 'dashdot' | 'dot' | 'longdash' | 'longdashdot' | 'solid'; + +export type AxisType = '-' | 'linear' | 'log' | 'date' | 'category' | 'multicategory'; + +export type XRef = 'container' | 'paper'; + +export type YRef = 'container' | 'paper'; + +export type PatternShape = '' | '/' | '\\' | 'x' | '-' | '|' | '+' | '.'; + +export type TransitionEasing = 'linear' | 'quad' | 'cubic' | 'sin' | 'exp' | 'circle' | 'elastic' | 'back' | 'bounce' | 'linear-in' | 'quad-in' | 'cubic-in' | 'sin-in' | 'exp-in' | 'circle-in' | 'elastic-in' | 'back-in' | 'bounce-in' | 'linear-out' | 'quad-out' | 'cubic-out' | 'sin-out' | 'exp-out' | 'circle-out' | 'elastic-out' | 'back-out' | 'bounce-out' | 'linear-in-out' | 'quad-in-out' | 'cubic-in-out' | 'sin-in-out' | 'exp-in-out' | 'circle-in-out' | 'elastic-in-out' | 'back-in-out' | 'bounce-in-out'; + +export type TraceType = 'bar' | 'barpolar' | 'box' | 'candlestick' | 'carpet' | 'choropleth' | 'choroplethmap' | 'choroplethmapbox' | 'cone' | 'contour' | 'contourcarpet' | 'densitymap' | 'densitymapbox' | 'funnel' | 'funnelarea' | 'heatmap' | 'histogram' | 'histogram2d' | 'histogram2dcontour' | 'icicle' | 'image' | 'indicator' | 'isosurface' | 'mesh3d' | 'ohlc' | 'parcats' | 'parcoords' | 'pie' | 'quiver' | 'sankey' | 'scatter' | 'scatter3d' | 'scattercarpet' | 'scattergeo' | 'scattergl' | 'scattermap' | 'scattermapbox' | 'scatterpolar' | 'scatterpolargl' | 'scattersmith' | 'scatterternary' | 'splom' | 'streamtube' | 'sunburst' | 'surface' | 'table' | 'treemap' | 'violin' | 'volume' | 'waterfall'; + +/** @deprecated Renamed to TraceType. */ +export type PlotType = TraceType; + +// --------------------------------------------------------------------------- +// Shared interfaces — extracted from repeated attribute subtrees +// --------------------------------------------------------------------------- + +export interface AnimationFrameOpts { + /** + * The duration in milliseconds of each frame. If greater than the frame duration, it will be limited to the frame duration. + * @default 500 + * Minimum: 0 + */ + duration?: number; + /** + * Redraw the plot at completion of the transition. This is desirable for transitions that include properties that cannot be transitioned, but may significantly slow down updates that do not require a full redraw of the plot + * @default true + */ + redraw?: boolean; +} + +export interface Domain { + /** + * If there is a layout grid, use the domain for this column in the grid for this funnelarea trace. + * @default 0 + * Minimum: 0 + */ + column?: number; + /** + * If there is a layout grid, use the domain for this row in the grid for this funnelarea trace. + * @default 0 + * Minimum: 0 + */ + row?: number; + /** + * Sets the horizontal domain of this funnelarea trace (in plot fraction). + * @default [0,1] + */ + x?: [number, number]; + /** + * Sets the vertical domain of this funnelarea trace (in plot fraction). + * @default [0,1] + */ + y?: [number, number]; +} + +export interface Font { + color?: Color; + /** HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available. */ + family?: string; + /** + * Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc. + * @default 'none' + */ + lineposition?: 'under' | 'over' | 'through' | 'none' | (string & {}); + /** + * Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options. + * @default 'none' + */ + shadow?: string; + /** + * Minimum: 1 + */ + size?: number; + /** + * Sets whether a font should be styled with a normal or italic face from its family. + * @default 'normal' + */ + style?: 'normal' | 'italic'; + /** + * Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized. + * @default 'normal' + */ + textcase?: 'normal' | 'word caps' | 'upper' | 'lower'; + /** + * Sets the variant of the font. + * @default 'normal' + */ + variant?: 'normal' | 'small-caps' | 'all-small-caps' | 'all-petite-caps' | 'petite-caps' | 'unicase'; + /** + * Sets the weight (or boldness) of the font. + * @default 'normal' + * Range: [1, 1000] + */ + weight?: number | 'normal' | 'bold'; +} + +export interface FontArray { + color?: Color | Color[]; + /** HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available. */ + family?: string | string[]; + /** + * Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc. + * @default 'none' + */ + lineposition?: 'under' | 'over' | 'through' | 'none' | (string & {}) | ('under' | 'over' | 'through' | 'none' | (string & {}))[]; + /** + * Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options. + * @default 'none' + */ + shadow?: string | string[]; + /** + * Minimum: 1 + */ + size?: number | number[]; + /** + * Sets whether a font should be styled with a normal or italic face from its family. + * @default 'normal' + */ + style?: 'normal' | 'italic' | ('normal' | 'italic')[]; + /** + * Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized. + * @default 'normal' + */ + textcase?: 'normal' | 'word caps' | 'upper' | 'lower' | ('normal' | 'word caps' | 'upper' | 'lower')[]; + /** + * Sets the variant of the font. + * @default 'normal' + */ + variant?: 'normal' | 'small-caps' | 'all-small-caps' | 'all-petite-caps' | 'petite-caps' | 'unicase' | ('normal' | 'small-caps' | 'all-small-caps' | 'all-petite-caps' | 'petite-caps' | 'unicase')[]; + /** + * Sets the weight (or boldness) of the font. + * @default 'normal' + * Range: [1, 1000] + */ + weight?: number | 'normal' | 'bold' | (number | 'normal' | 'bold')[]; +} + +export interface Pattern { + /** When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background. */ + bgcolor?: Color | Color[]; + /** When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`. */ + fgcolor?: Color | Color[]; + /** + * Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1. + * Range: [0, 1] + */ + fgopacity?: number; + /** + * Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`. + * @default 'replace' + */ + fillmode?: 'replace' | 'overlay'; + /** Sets a custom path for pattern fill. Use with no `shape` or `solidity`, provide an SVG path string for the regions of the square from (0,0) to (`size`,`size`) to color. */ + path?: string | string[]; + /** Sets the shape of the pattern fill. By default, no pattern is used for filling the area. */ + shape?: PatternShape | PatternShape[]; + /** + * Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern. + * @default 8 + * Minimum: 0 + */ + size?: number | number[]; + /** + * Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern. + * @default 0.3 + * Range: [0, 1] + */ + solidity?: number | number[]; +} + +export interface TickFormatStops { + /** range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null* */ + dtickrange?: [any, any]; + /** + * Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`. + * @default true + */ + enabled?: boolean; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** string - dtickformat for described zoom level, the same as *tickformat* */ + value?: string; +} + +export interface Transition { + /** + * The duration of the transition, in milliseconds. If equal to zero, updates are synchronous. + * @default 500 + * Minimum: 0 + */ + duration?: number; + /** + * The easing function used for the transition + * @default 'cubic-in-out' + */ + easing?: TransitionEasing; + /** + * Determines whether the figure's layout or traces smoothly transitions during updates that make both traces and layout change. + * @default 'layout first' + */ + ordering?: 'layout first' | 'traces first'; +} + +export interface ColorBar { + /** + * Sets the color of padded area. + * @default 'rgba(0,0,0,0)' + */ + bgcolor?: Color; + /** + * Sets the axis line color. + * @default '#444' + */ + bordercolor?: Color; + /** + * Sets the width (in px) or the border enclosing this color bar. + * @default 0 + * Minimum: 0 + */ + borderwidth?: number; + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ + dtick?: any; + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ + labelalias?: any; + /** + * Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends. + * @default 1 + * Minimum: 0 + */ + len?: number; + /** + * Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value. + * @default 'fraction' + */ + lenmode?: 'fraction' | 'pixels'; + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ + minexponent?: number; + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ + nticks?: number; + /** + * Sets the orientation of the colorbar. + * @default 'v' + */ + orientation?: 'h' | 'v'; + /** + * Sets the axis line color. + * @default '#444' + */ + outlinecolor?: Color; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + outlinewidth?: number; + /** + * If "true", even 4-digit integers are separated + * @default false + */ + separatethousands?: boolean; + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ + showticklabels?: boolean; + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels. + * @default 30 + * Minimum: 0 + */ + thickness?: number; + /** + * Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value. + * @default 'pixels' + */ + thicknessmode?: 'fraction' | 'pixels'; + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ + tick0?: any; + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ + tickangle?: number | 'auto'; + /** + * Sets the tick color. + * @default '#444' + */ + tickcolor?: Color; + /** Sets the color bar's tick label font */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*. */ + ticklabeloverflow?: 'allow' | 'hide past div' | 'hide past domain'; + /** + * Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*. + * @default 'outside' + */ + ticklabelposition?: 'outside' | 'inside' | 'outside top' | 'inside top' | 'outside left' | 'inside left' | 'outside right' | 'inside right' | 'outside bottom' | 'inside bottom'; + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ + ticklabelstep?: number; + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | Datum[][] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ + tickwidth?: number; + title?: { + /** Sets this color bar's title font. */ + font?: Font; + /** Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*. */ + side?: 'right' | 'top' | 'bottom'; + /** Sets the title of the color bar. */ + text?: string; + }; + /** Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*. */ + x?: number; + /** Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*. */ + xanchor?: 'left' | 'center' | 'right'; + /** + * Sets the amount of padding (in px) along the x direction. + * @default 10 + * Minimum: 0 + */ + xpad?: number; + /** + * Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only. + * @default 'paper' + */ + xref?: YRef; + /** Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*. */ + y?: number; + /** Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*. */ + yanchor?: 'top' | 'middle' | 'bottom'; + /** + * Sets the amount of padding (in px) along the y direction. + * @default 10 + * Minimum: 0 + */ + ypad?: number; + /** + * Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only. + * @default 'paper' + */ + yref?: YRef; +} + +export interface HoverLabel { + /** + * Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines + * @default 'auto' + */ + align?: 'left' | 'right' | 'auto' | ('left' | 'right' | 'auto')[]; + /** Sets the background color of the hover labels for this trace */ + bgcolor?: Color | Color[]; + /** Sets the border color of the hover labels for this trace. */ + bordercolor?: Color | Color[]; + /** Sets the font used in hover labels. */ + font?: FontArray; + /** + * Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. + * @default 15 + * Minimum: -1 + */ + namelength?: number | number[]; + /** + * Sets whether or not to show the hover label arrow/triangle pointing to the data point. + * @default true + */ + showarrow?: boolean; +} + +export interface LegendGroupTitle { + /** Sets this legend group's title font. */ + font?: Font; + /** Sets the title of the legend group. */ + text?: string; +} + +// --------------------------------------------------------------------------- +// Internal shared interfaces — schema helpers or types whose direct names +// would mislead consumers. Reach them via `_internal.X` or, preferably, +// through indexed access on the parent type (e.g. `ScatterData["marker"]`). +// --------------------------------------------------------------------------- + +export namespace _internal { + export interface AutoRangeOptions { + /** Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided. */ + clipmax?: any; + /** Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided. */ + clipmin?: any; + /** Extends the autorange to include this value or array of values, even when they fall outside the data range. Has no effect on endpoints set by `autorangeoptions.minallowed` or `autorangeoptions.maxallowed`. Subject to `autorangeoptions.clipmin` and `autorangeoptions.clipmax`. */ + include?: any; + /** Use this value exactly as autorange maximum. */ + maxallowed?: any; + /** Use this value exactly as autorange minimum. */ + minallowed?: any; + } + + export interface ErrorY { + /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ + array?: Datum[] | Datum[][] | TypedArray; + /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ + arrayminus?: Datum[] | Datum[][] | TypedArray; + /** Sets the stroke color of the error bars. */ + color?: Color; + /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ + symmetric?: boolean; + /** + * Sets the thickness (in px) of the error bars. + * @default 2 + * Minimum: 0 + */ + thickness?: number; + /** + * @default 0 + * Minimum: 0 + */ + traceref?: number; + /** + * @default 0 + * Minimum: 0 + */ + tracerefminus?: number; + /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ + type?: 'percent' | 'constant' | 'sqrt' | 'data'; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. + * @default 10 + * Minimum: 0 + */ + value?: number; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars + * @default 10 + * Minimum: 0 + */ + valueminus?: number; + /** Determines whether or not this set of error bars is visible. */ + visible?: boolean; + /** + * Sets the width (in px) of the cross-bar at both ends of the error bars. + * Minimum: 0 + */ + width?: number; + } + + export interface Lighting { + /** + * Ambient light increases overall color visibility but can wash out the image. + * @default 0.8 + * Range: [0, 1] + */ + ambient?: number; + /** + * Represents the extent that incident rays are reflected in a range of angles. + * @default 0.8 + * Range: [0, 1] + */ + diffuse?: number; + /** + * Epsilon for face normals calculation avoids math issues arising from degenerate geometry. + * @default 0.000001 + * Range: [0, 1] + */ + facenormalsepsilon?: number; + /** + * Represents the reflectance as a dependency of the viewing angle; e.g. paper is reflective when viewing it from the edge of the paper (almost 90 degrees), causing shine. + * @default 0.2 + * Range: [0, 5] + */ + fresnel?: number; + /** + * Alters specular reflection; the rougher the surface, the wider and less contrasty the shine. + * @default 0.5 + * Range: [0, 1] + */ + roughness?: number; + /** + * Represents the level that incident rays are reflected in a single direction, causing shine. + * @default 0.05 + * Range: [0, 2] + */ + specular?: number; + /** + * Epsilon for vertex normals calculation avoids math issues arising from degenerate geometry. + * @default 1e-12 + * Range: [0, 1] + */ + vertexnormalsepsilon?: number; + } + + export interface Line { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + /** + * Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash | Dash[]; + /** + * Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Sets the width (in px) of the lines bounding the marker points. + * Minimum: 0 + */ + width?: number | number[]; + } + + export interface Marker { + /** + * Sets the marker angle in respect to `angleref`. + * @default 0 + */ + angle?: number | 'auto' | (number | 'auto')[]; + /** + * Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen. + * @default 'up' + */ + angleref?: 'previous' | 'up'; + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + gradient?: { + /** Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical. */ + color?: Color | Color[]; + /** + * Sets the type of gradient used to fill the markers + * @default 'none' + */ + type?: 'radial' | 'horizontal' | 'vertical' | 'none' | ('radial' | 'horizontal' | 'vertical' | 'none')[]; + }; + line?: Line; + /** + * Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit. + * @default 0 + * Minimum: 0 + */ + maxdisplayed?: number; + /** + * Sets the marker opacity. + * Range: [0, 1] + */ + opacity?: number | number[]; + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ + showscale?: boolean; + /** + * Sets the marker size (in px). + * @default 6 + * Minimum: 0 + */ + size?: number | number[]; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. + * @default 0 + * Minimum: 0 + */ + sizemin?: number; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. + * @default 'diameter' + */ + sizemode?: 'diameter' | 'area'; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. + * @default 1 + */ + sizeref?: number; + /** + * Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it. + * @default 0 + * Minimum: 0 + */ + standoff?: number | number[]; + /** + * Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. + * @default 'circle' + */ + symbol?: 0 | '0' | 'circle' | 100 | '100' | 'circle-open' | 200 | '200' | 'circle-dot' | 300 | '300' | 'circle-open-dot' | 1 | '1' | 'square' | 101 | '101' | 'square-open' | 201 | '201' | 'square-dot' | 301 | '301' | 'square-open-dot' | 2 | '2' | 'diamond' | 102 | '102' | 'diamond-open' | 202 | '202' | 'diamond-dot' | 302 | '302' | 'diamond-open-dot' | 3 | '3' | 'cross' | 103 | '103' | 'cross-open' | 203 | '203' | 'cross-dot' | 303 | '303' | 'cross-open-dot' | 4 | '4' | 'x' | 104 | '104' | 'x-open' | 204 | '204' | 'x-dot' | 304 | '304' | 'x-open-dot' | 5 | '5' | 'triangle-up' | 105 | '105' | 'triangle-up-open' | 205 | '205' | 'triangle-up-dot' | 305 | '305' | 'triangle-up-open-dot' | 6 | '6' | 'triangle-down' | 106 | '106' | 'triangle-down-open' | 206 | '206' | 'triangle-down-dot' | 306 | '306' | 'triangle-down-open-dot' | 7 | '7' | 'triangle-left' | 107 | '107' | 'triangle-left-open' | 207 | '207' | 'triangle-left-dot' | 307 | '307' | 'triangle-left-open-dot' | 8 | '8' | 'triangle-right' | 108 | '108' | 'triangle-right-open' | 208 | '208' | 'triangle-right-dot' | 308 | '308' | 'triangle-right-open-dot' | 9 | '9' | 'triangle-ne' | 109 | '109' | 'triangle-ne-open' | 209 | '209' | 'triangle-ne-dot' | 309 | '309' | 'triangle-ne-open-dot' | 10 | '10' | 'triangle-se' | 110 | '110' | 'triangle-se-open' | 210 | '210' | 'triangle-se-dot' | 310 | '310' | 'triangle-se-open-dot' | 11 | '11' | 'triangle-sw' | 111 | '111' | 'triangle-sw-open' | 211 | '211' | 'triangle-sw-dot' | 311 | '311' | 'triangle-sw-open-dot' | 12 | '12' | 'triangle-nw' | 112 | '112' | 'triangle-nw-open' | 212 | '212' | 'triangle-nw-dot' | 312 | '312' | 'triangle-nw-open-dot' | 13 | '13' | 'pentagon' | 113 | '113' | 'pentagon-open' | 213 | '213' | 'pentagon-dot' | 313 | '313' | 'pentagon-open-dot' | 14 | '14' | 'hexagon' | 114 | '114' | 'hexagon-open' | 214 | '214' | 'hexagon-dot' | 314 | '314' | 'hexagon-open-dot' | 15 | '15' | 'hexagon2' | 115 | '115' | 'hexagon2-open' | 215 | '215' | 'hexagon2-dot' | 315 | '315' | 'hexagon2-open-dot' | 16 | '16' | 'octagon' | 116 | '116' | 'octagon-open' | 216 | '216' | 'octagon-dot' | 316 | '316' | 'octagon-open-dot' | 17 | '17' | 'star' | 117 | '117' | 'star-open' | 217 | '217' | 'star-dot' | 317 | '317' | 'star-open-dot' | 18 | '18' | 'hexagram' | 118 | '118' | 'hexagram-open' | 218 | '218' | 'hexagram-dot' | 318 | '318' | 'hexagram-open-dot' | 19 | '19' | 'star-triangle-up' | 119 | '119' | 'star-triangle-up-open' | 219 | '219' | 'star-triangle-up-dot' | 319 | '319' | 'star-triangle-up-open-dot' | 20 | '20' | 'star-triangle-down' | 120 | '120' | 'star-triangle-down-open' | 220 | '220' | 'star-triangle-down-dot' | 320 | '320' | 'star-triangle-down-open-dot' | 21 | '21' | 'star-square' | 121 | '121' | 'star-square-open' | 221 | '221' | 'star-square-dot' | 321 | '321' | 'star-square-open-dot' | 22 | '22' | 'star-diamond' | 122 | '122' | 'star-diamond-open' | 222 | '222' | 'star-diamond-dot' | 322 | '322' | 'star-diamond-open-dot' | 23 | '23' | 'diamond-tall' | 123 | '123' | 'diamond-tall-open' | 223 | '223' | 'diamond-tall-dot' | 323 | '323' | 'diamond-tall-open-dot' | 24 | '24' | 'diamond-wide' | 124 | '124' | 'diamond-wide-open' | 224 | '224' | 'diamond-wide-dot' | 324 | '324' | 'diamond-wide-open-dot' | 25 | '25' | 'hourglass' | 125 | '125' | 'hourglass-open' | 26 | '26' | 'bowtie' | 126 | '126' | 'bowtie-open' | 27 | '27' | 'circle-cross' | 127 | '127' | 'circle-cross-open' | 28 | '28' | 'circle-x' | 128 | '128' | 'circle-x-open' | 29 | '29' | 'square-cross' | 129 | '129' | 'square-cross-open' | 30 | '30' | 'square-x' | 130 | '130' | 'square-x-open' | 31 | '31' | 'diamond-cross' | 131 | '131' | 'diamond-cross-open' | 32 | '32' | 'diamond-x' | 132 | '132' | 'diamond-x-open' | 33 | '33' | 'cross-thin' | 133 | '133' | 'cross-thin-open' | 34 | '34' | 'x-thin' | 134 | '134' | 'x-thin-open' | 35 | '35' | 'asterisk' | 135 | '135' | 'asterisk-open' | 36 | '36' | 'hash' | 136 | '136' | 'hash-open' | 236 | '236' | 'hash-dot' | 336 | '336' | 'hash-open-dot' | 37 | '37' | 'y-up' | 137 | '137' | 'y-up-open' | 38 | '38' | 'y-down' | 138 | '138' | 'y-down-open' | 39 | '39' | 'y-left' | 139 | '139' | 'y-left-open' | 40 | '40' | 'y-right' | 140 | '140' | 'y-right-open' | 41 | '41' | 'line-ew' | 141 | '141' | 'line-ew-open' | 42 | '42' | 'line-ns' | 142 | '142' | 'line-ns-open' | 43 | '43' | 'line-ne' | 143 | '143' | 'line-ne-open' | 44 | '44' | 'line-nw' | 144 | '144' | 'line-nw-open' | 45 | '45' | 'arrow-up' | 145 | '145' | 'arrow-up-open' | 46 | '46' | 'arrow-down' | 146 | '146' | 'arrow-down-open' | 47 | '47' | 'arrow-left' | 147 | '147' | 'arrow-left-open' | 48 | '48' | 'arrow-right' | 148 | '148' | 'arrow-right-open' | 49 | '49' | 'arrow-bar-up' | 149 | '149' | 'arrow-bar-up-open' | 50 | '50' | 'arrow-bar-down' | 150 | '150' | 'arrow-bar-down-open' | 51 | '51' | 'arrow-bar-left' | 151 | '151' | 'arrow-bar-left-open' | 52 | '52' | 'arrow-bar-right' | 152 | '152' | 'arrow-bar-right-open' | 53 | '53' | 'arrow' | 153 | '153' | 'arrow-open' | 54 | '54' | 'arrow-wide' | 154 | '154' | 'arrow-wide-open' | (0 | '0' | 'circle' | 100 | '100' | 'circle-open' | 200 | '200' | 'circle-dot' | 300 | '300' | 'circle-open-dot' | 1 | '1' | 'square' | 101 | '101' | 'square-open' | 201 | '201' | 'square-dot' | 301 | '301' | 'square-open-dot' | 2 | '2' | 'diamond' | 102 | '102' | 'diamond-open' | 202 | '202' | 'diamond-dot' | 302 | '302' | 'diamond-open-dot' | 3 | '3' | 'cross' | 103 | '103' | 'cross-open' | 203 | '203' | 'cross-dot' | 303 | '303' | 'cross-open-dot' | 4 | '4' | 'x' | 104 | '104' | 'x-open' | 204 | '204' | 'x-dot' | 304 | '304' | 'x-open-dot' | 5 | '5' | 'triangle-up' | 105 | '105' | 'triangle-up-open' | 205 | '205' | 'triangle-up-dot' | 305 | '305' | 'triangle-up-open-dot' | 6 | '6' | 'triangle-down' | 106 | '106' | 'triangle-down-open' | 206 | '206' | 'triangle-down-dot' | 306 | '306' | 'triangle-down-open-dot' | 7 | '7' | 'triangle-left' | 107 | '107' | 'triangle-left-open' | 207 | '207' | 'triangle-left-dot' | 307 | '307' | 'triangle-left-open-dot' | 8 | '8' | 'triangle-right' | 108 | '108' | 'triangle-right-open' | 208 | '208' | 'triangle-right-dot' | 308 | '308' | 'triangle-right-open-dot' | 9 | '9' | 'triangle-ne' | 109 | '109' | 'triangle-ne-open' | 209 | '209' | 'triangle-ne-dot' | 309 | '309' | 'triangle-ne-open-dot' | 10 | '10' | 'triangle-se' | 110 | '110' | 'triangle-se-open' | 210 | '210' | 'triangle-se-dot' | 310 | '310' | 'triangle-se-open-dot' | 11 | '11' | 'triangle-sw' | 111 | '111' | 'triangle-sw-open' | 211 | '211' | 'triangle-sw-dot' | 311 | '311' | 'triangle-sw-open-dot' | 12 | '12' | 'triangle-nw' | 112 | '112' | 'triangle-nw-open' | 212 | '212' | 'triangle-nw-dot' | 312 | '312' | 'triangle-nw-open-dot' | 13 | '13' | 'pentagon' | 113 | '113' | 'pentagon-open' | 213 | '213' | 'pentagon-dot' | 313 | '313' | 'pentagon-open-dot' | 14 | '14' | 'hexagon' | 114 | '114' | 'hexagon-open' | 214 | '214' | 'hexagon-dot' | 314 | '314' | 'hexagon-open-dot' | 15 | '15' | 'hexagon2' | 115 | '115' | 'hexagon2-open' | 215 | '215' | 'hexagon2-dot' | 315 | '315' | 'hexagon2-open-dot' | 16 | '16' | 'octagon' | 116 | '116' | 'octagon-open' | 216 | '216' | 'octagon-dot' | 316 | '316' | 'octagon-open-dot' | 17 | '17' | 'star' | 117 | '117' | 'star-open' | 217 | '217' | 'star-dot' | 317 | '317' | 'star-open-dot' | 18 | '18' | 'hexagram' | 118 | '118' | 'hexagram-open' | 218 | '218' | 'hexagram-dot' | 318 | '318' | 'hexagram-open-dot' | 19 | '19' | 'star-triangle-up' | 119 | '119' | 'star-triangle-up-open' | 219 | '219' | 'star-triangle-up-dot' | 319 | '319' | 'star-triangle-up-open-dot' | 20 | '20' | 'star-triangle-down' | 120 | '120' | 'star-triangle-down-open' | 220 | '220' | 'star-triangle-down-dot' | 320 | '320' | 'star-triangle-down-open-dot' | 21 | '21' | 'star-square' | 121 | '121' | 'star-square-open' | 221 | '221' | 'star-square-dot' | 321 | '321' | 'star-square-open-dot' | 22 | '22' | 'star-diamond' | 122 | '122' | 'star-diamond-open' | 222 | '222' | 'star-diamond-dot' | 322 | '322' | 'star-diamond-open-dot' | 23 | '23' | 'diamond-tall' | 123 | '123' | 'diamond-tall-open' | 223 | '223' | 'diamond-tall-dot' | 323 | '323' | 'diamond-tall-open-dot' | 24 | '24' | 'diamond-wide' | 124 | '124' | 'diamond-wide-open' | 224 | '224' | 'diamond-wide-dot' | 324 | '324' | 'diamond-wide-open-dot' | 25 | '25' | 'hourglass' | 125 | '125' | 'hourglass-open' | 26 | '26' | 'bowtie' | 126 | '126' | 'bowtie-open' | 27 | '27' | 'circle-cross' | 127 | '127' | 'circle-cross-open' | 28 | '28' | 'circle-x' | 128 | '128' | 'circle-x-open' | 29 | '29' | 'square-cross' | 129 | '129' | 'square-cross-open' | 30 | '30' | 'square-x' | 130 | '130' | 'square-x-open' | 31 | '31' | 'diamond-cross' | 131 | '131' | 'diamond-cross-open' | 32 | '32' | 'diamond-x' | 132 | '132' | 'diamond-x-open' | 33 | '33' | 'cross-thin' | 133 | '133' | 'cross-thin-open' | 34 | '34' | 'x-thin' | 134 | '134' | 'x-thin-open' | 35 | '35' | 'asterisk' | 135 | '135' | 'asterisk-open' | 36 | '36' | 'hash' | 136 | '136' | 'hash-open' | 236 | '236' | 'hash-dot' | 336 | '336' | 'hash-open-dot' | 37 | '37' | 'y-up' | 137 | '137' | 'y-up-open' | 38 | '38' | 'y-down' | 138 | '138' | 'y-down-open' | 39 | '39' | 'y-left' | 139 | '139' | 'y-left-open' | 40 | '40' | 'y-right' | 140 | '140' | 'y-right-open' | 41 | '41' | 'line-ew' | 141 | '141' | 'line-ew-open' | 42 | '42' | 'line-ns' | 142 | '142' | 'line-ns-open' | 43 | '43' | 'line-ne' | 143 | '143' | 'line-ne-open' | 44 | '44' | 'line-nw' | 144 | '144' | 'line-nw-open' | 45 | '45' | 'arrow-up' | 145 | '145' | 'arrow-up-open' | 46 | '46' | 'arrow-down' | 146 | '146' | 'arrow-down-open' | 47 | '47' | 'arrow-left' | 147 | '147' | 'arrow-left-open' | 48 | '48' | 'arrow-right' | 148 | '148' | 'arrow-right-open' | 49 | '49' | 'arrow-bar-up' | 149 | '149' | 'arrow-bar-up-open' | 50 | '50' | 'arrow-bar-down' | 150 | '150' | 'arrow-bar-down-open' | 51 | '51' | 'arrow-bar-left' | 151 | '151' | 'arrow-bar-left-open' | 52 | '52' | 'arrow-bar-right' | 152 | '152' | 'arrow-bar-right-open' | 53 | '53' | 'arrow' | 153 | '153' | 'arrow-open' | 54 | '54' | 'arrow-wide' | 154 | '154' | 'arrow-wide-open')[]; + } + +} + +// --------------------------------------------------------------------------- +// Trace interfaces +// --------------------------------------------------------------------------- + +export interface BarData { + /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ + alignmentgroup?: string; + /** Sets where the bar base is drawn (in position axis units). In *stack* or *relative* barmode, traces that set *base* will be excluded and drawn in *overlay* mode instead. */ + base?: any; + /** + * Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default true + */ + cliponaxis?: boolean; + /** + * Constrain the size of text inside or outside a bar to be no larger than the bar itself. + * @default 'both' + */ + constraintext?: 'inside' | 'outside' | 'both' | 'none'; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + */ + dx?: number; + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + */ + dy?: number; + error_x?: { + /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ + array?: Datum[] | Datum[][] | TypedArray; + /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ + arrayminus?: Datum[] | Datum[][] | TypedArray; + /** Sets the stroke color of the error bars. */ + color?: Color; + copy_ystyle?: boolean; + /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ + symmetric?: boolean; + /** + * Sets the thickness (in px) of the error bars. + * @default 2 + * Minimum: 0 + */ + thickness?: number; + /** + * @default 0 + * Minimum: 0 + */ + traceref?: number; + /** + * @default 0 + * Minimum: 0 + */ + tracerefminus?: number; + /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ + type?: 'percent' | 'constant' | 'sqrt' | 'data'; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. + * @default 10 + * Minimum: 0 + */ + value?: number; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars + * @default 10 + * Minimum: 0 + */ + valueminus?: number; + /** Determines whether or not this set of error bars is visible. */ + visible?: boolean; + /** + * Sets the width (in px) of the cross-bar at both ends of the error bars. + * Minimum: 0 + */ + width?: number; + }; + error_y?: _internal.ErrorY; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `value` and `label`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Determines if texts are kept at center or start/end points in `textposition` *inside* mode. + * @default 'end' + */ + insidetextanchor?: 'end' | 'middle' | 'start'; + /** Sets the font used for `text` lying inside the bar. */ + insidetextfont?: FontArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + marker?: { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** Sets the rounding of corners. May be an integer number of pixels, or a percentage of bar width (as a string ending in %). Defaults to `layout.barcornerradius`. In stack or relative barmode, the first trace to set cornerradius is used for the whole stack. */ + cornerradius?: any; + line?: _internal.Line; + /** + * Sets the opacity of the bars. + * @default 1 + * Range: [0, 1] + */ + opacity?: number | number[]; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ + showscale?: boolean; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Shifts the position where the bar is drawn (in position axis units). In *group* barmode, traces that set *offset* will be excluded and drawn in *overlay* mode instead. */ + offset?: number | number[]; + /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ + offsetgroup?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the orientation of the bars. With *v* (*h*), the value of the each bar spans along the vertical (horizontal). */ + orientation?: 'v' | 'h'; + /** Sets the font used for `text` lying outside the bar. */ + outsidetextfont?: FontArray; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** + * Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. + * @default 'auto' + */ + textangle?: number | 'auto'; + /** Sets the font used for `text`. */ + textfont?: FontArray; + /** + * Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. + * @default 'auto' + */ + textposition?: 'inside' | 'outside' | 'auto' | 'none' | ('inside' | 'outside' | 'auto' | 'none')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `value` and `label`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + type?: 'bar'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + }; + textfont?: Font; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** + * Sets the bar width (in position axis units). + * Minimum: 0 + */ + width?: number | number[]; + /** Sets the x coordinates. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + */ + x0?: any; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ + xcalendar?: Calendar; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the y coordinates. */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + */ + y0?: any; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ + ycalendar?: Calendar; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ + yperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + yperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + */ + yperiodalignment?: 'start' | 'middle' | 'end'; + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ + zorder?: number; +} + +export interface BarpolarData { + /** Sets where the bar base is drawn (in radial axis units). In *stack* barmode, traces that set *base* will be excluded and drawn in *overlay* mode instead. */ + base?: any; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the r coordinate step. + * @default 1 + */ + dr?: number; + /** Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates. */ + dtheta?: number; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + marker?: { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + line?: _internal.Line; + /** + * Sets the opacity of the bars. + * @default 1 + * Range: [0, 1] + */ + opacity?: number | number[]; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ + showscale?: boolean; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Shifts the angular position where the bar is drawn (in *thetatunit* units). */ + offset?: number | number[]; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the radial coordinates */ + r?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step. + * @default 0 + */ + r0?: any; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on. + * @default 'polar' + */ + subplot?: string; + /** Sets hover text elements associated with each bar. If a single string, the same string appears over all bars. If an array of string, the items are mapped in order to the this trace's coordinates. */ + text?: string | string[]; + /** Sets the angular coordinates */ + theta?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step. + * @default 0 + */ + theta0?: any; + /** + * Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes. + * @default 'degrees' + */ + thetaunit?: 'radians' | 'degrees' | 'gradians'; + type?: 'barpolar'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + }; + textfont?: Font; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** + * Sets the bar angular width (in *thetaunit* units). + * Minimum: 0 + */ + width?: number | number[]; +} + +export interface BoxData { + /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ + alignmentgroup?: string; + /** If *true*, the mean of the box(es)' underlying distribution is drawn as a dashed line inside the box(es). If *sd* the standard deviation is also drawn. Defaults to *true* when `mean` is set. Defaults to *sd* when `sd` is set Otherwise defaults to *false*. */ + boxmean?: true | 'sd' | false; + /** If *outliers*, only the sample points lying outside the whiskers are shown If *suspectedoutliers*, the outlier points are shown and points either less than 4*Q1-3*Q3 or greater than 4*Q3-3*Q1 are highlighted (see `outliercolor`) If *all*, all sample points are shown If *false*, only the box(es) are shown with no sample points Defaults to *suspectedoutliers* when `marker.outliercolor` or `marker.line.outliercolor` is set. Defaults to *all* under the q1/median/q3 signature. Otherwise defaults to *outliers*. */ + boxpoints?: 'all' | 'outliers' | 'suspectedoutliers' | false; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** Sets the x coordinate step for multi-box traces set using q1/median/q3. */ + dx?: number; + /** Sets the y coordinate step for multi-box traces set using q1/median/q3. */ + dy?: number; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** + * Do the hover effects highlight individual boxes or sample points or both? + * @default 'boxes+points' + */ + hoveron?: 'boxes' | 'points' | (string & {}); + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the amount of jitter in the sample points drawn. If *0*, the sample points align along the distribution axis. If *1*, the sample points are drawn in a random jitter of width equal to the width of the box(es). + * Range: [0, 1] + */ + jitter?: number; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: _internal.ErrorY; + /** Sets the lower fence values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `lowerfence` is not provided but a sample (in `y` or `x`) is set, we compute the lower as the last sample point below 1.5 times the IQR. */ + lowerfence?: Datum[] | Datum[][] | TypedArray; + marker?: { + /** + * Sets the marker angle in respect to `angleref`. + * @default 0 + */ + angle?: number | 'auto'; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color; + line?: { + /** + * Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set. + * @default '#444' + */ + color?: Color; + /** Sets the border line color of the outlier sample points. Defaults to marker.color */ + outliercolor?: Color; + /** + * Sets the border line width (in px) of the outlier sample points. + * @default 1 + * Minimum: 0 + */ + outlierwidth?: number; + /** + * Sets the width (in px) of the lines bounding the marker points. + * @default 0 + * Minimum: 0 + */ + width?: number; + }; + /** + * Sets the marker opacity. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the color of the outlier sample points. + * @default 'rgba(0, 0, 0, 0)' + */ + outliercolor?: Color; + /** + * Sets the marker size (in px). + * @default 6 + * Minimum: 0 + */ + size?: number; + /** + * Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. + * @default 'circle' + */ + symbol?: MarkerSymbol; + }; + /** Sets the mean values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `mean` is not provided but a sample (in `y` or `x`) is set, we compute the mean for each box using the sample values. */ + mean?: Datum[] | Datum[][] | TypedArray; + /** Sets the median values. There should be as many items as the number of boxes desired. */ + median?: Datum[] | Datum[][] | TypedArray; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. For box traces, the name will also be used for the position coordinate, if `x` and `x0` (`y` and `y0` if horizontal) are missing and the position axis is categorical */ + name?: string; + /** Determines whether or not notches are drawn. Notches displays a confidence interval around the median. We compute the confidence interval as median +/- 1.57 * IQR / sqrt(N), where IQR is the interquartile range and N is the sample size. If two boxes' notches do not overlap there is 95% confidence their medians differ. See https://sites.google.com/site/davidsstatistics/home/notched-box-plots for more info. Defaults to *false* unless `notchwidth` or `notchspan` is set. */ + notched?: boolean; + /** Sets the notch span from the boxes' `median` values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `notchspan` is not provided but a sample (in `y` or `x`) is set, we compute it as 1.57 * IQR / sqrt(N), where N is the sample size. */ + notchspan?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the width of the notches relative to the box width. For example, with 0, the notches are as wide as the box(es). + * @default 0.25 + * Range: [0, 0.5] + */ + notchwidth?: number; + /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ + offsetgroup?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the orientation of the box(es). If *v* (*h*), the distribution is visualized along the vertical (horizontal). */ + orientation?: 'v' | 'h'; + /** + * Sets the position of the sample points in relation to the box(es). If *0*, the sample points are places over the center of the box(es). Positive (negative) values correspond to positions to the right (left) for vertical boxes and above (below) for horizontal boxes + * Range: [-2, 2] + */ + pointpos?: number; + /** Sets the Quartile 1 values. There should be as many items as the number of boxes desired. */ + q1?: Datum[] | Datum[][] | TypedArray; + /** Sets the Quartile 3 values. There should be as many items as the number of boxes desired. */ + q3?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the method used to compute the sample's Q1 and Q3 quartiles. The *linear* method uses the 25th percentile for Q1 and 75th percentile for Q3 as computed using method #10 (listed on http://jse.amstat.org/v14n3/langford.html). The *exclusive* method uses the median to divide the ordered dataset into two halves if the sample is odd, it does not include the median in either half - Q1 is then the median of the lower half and Q3 the median of the upper half. The *inclusive* method also uses the median to divide the ordered dataset into two halves but if the sample is odd, it includes the median in both halves - Q1 is then the median of the lower half and Q3 the median of the upper half. + * @default 'linear' + */ + quartilemethod?: 'linear' | 'exclusive' | 'inclusive'; + /** Sets the standard deviation values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `sd` is not provided but a sample (in `y` or `x`) is set, we compute the standard deviation for each box using the sample values. */ + sd?: Datum[] | Datum[][] | TypedArray; + /** + * Scales the box size when sizemode=sd Allowing boxes to be drawn across any stddev range For example 1-stddev, 3-stddev, 5-stddev + * @default 1 + * Minimum: 0 + */ + sdmultiple?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ + size?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** Determines whether or not whiskers are visible. Defaults to true for `sizemode` *quartiles*, false for *sd*. */ + showwhiskers?: boolean; + /** + * Sets the upper and lower bound for the boxes quartiles means box is drawn between Q1 and Q3 SD means the box is drawn between Mean +- Standard Deviation Argument sdmultiple (default 1) to scale the box size So it could be drawn 1-stddev, 3-stddev etc + * @default 'quartiles' + */ + sizemode?: 'quartiles' | 'sd'; + /** Sets the text elements associated with each sample value. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + text?: string | string[]; + type?: 'box'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ + size?: number; + }; + }; + /** Sets the upper fence values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `upperfence` is not provided but a sample (in `y` or `x`) is set, we compute the upper as the last sample point above 1.5 times the IQR. */ + upperfence?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** + * Sets the width of the whiskers relative to the box width. For example, with 1, the whiskers are as wide as the box(es). + * @default 0.5 + * Range: [0, 1] + */ + whiskerwidth?: number; + /** + * Sets the width of the box in data coordinate If *0* (default value) the width is automatically selected based on the positions of other box traces in the same subplot. + * @default 0 + * Minimum: 0 + */ + width?: number; + /** Sets the x sample data or coordinates. See overview for more info. */ + x?: Datum[] | Datum[][] | TypedArray; + /** Sets the x coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ + x0?: any; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ + xcalendar?: Calendar; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the y sample data or coordinates. See overview for more info. */ + y?: Datum[] | Datum[][] | TypedArray; + /** Sets the y coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ + y0?: any; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ + ycalendar?: Calendar; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ + yperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + yperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + */ + yperiodalignment?: 'start' | 'middle' | 'end'; + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ + zorder?: number; +} + +export interface CandlestickData { + /** Sets the close values. */ + close?: Datum[] | Datum[][] | TypedArray; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + decreasing?: { + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + line?: _internal.ErrorY; + }; + /** Sets the high values. */ + high?: Datum[] | Datum[][] | TypedArray; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: { + /** + * Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines + * @default 'auto' + */ + align?: 'left' | 'right' | 'auto' | ('left' | 'right' | 'auto')[]; + /** Sets the background color of the hover labels for this trace */ + bgcolor?: Color | Color[]; + /** Sets the border color of the hover labels for this trace. */ + bordercolor?: Color | Color[]; + /** Sets the font used in hover labels. */ + font?: FontArray; + /** + * Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. + * @default 15 + * Minimum: -1 + */ + namelength?: number | number[]; + /** + * Sets whether or not to show the hover label arrow/triangle pointing to the data point. + * @default true + */ + showarrow?: boolean; + /** + * Show hover information (open, close, high, low) in separate labels, rather than a single unified label. Default: *false*. When set to *true*, `hovertemplate` is ignored. + * @default false + */ + split?: boolean; + }; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `open`, `high`, `low` and `close`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + increasing?: { + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + line?: _internal.ErrorY; + }; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: _internal.ErrorY; + /** Sets the low values. */ + low?: Datum[] | Datum[][] | TypedArray; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the open values. */ + open?: Datum[] | Datum[][] | TypedArray; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** Sets hover text elements associated with each sample point. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to this trace's sample points. */ + text?: string | string[]; + type?: 'candlestick'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** + * Sets the width of the whiskers relative to the box width. For example, with 1, the whiskers are as wide as the box(es). + * @default 0 + * Range: [0, 1] + */ + whiskerwidth?: number; + /** Sets the x coordinates. If absent, linear coordinate will be generated. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ + xcalendar?: Calendar; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ + zorder?: number; +} + +export interface CarpetData { + /** An array containing values of the first parameter value */ + a?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `a`. Builds a linear space of a coordinates. Use with `da` where `a0` is the starting coordinate and `da` the step. + * @default 0 + */ + a0?: number; + aaxis?: { + /** + * The stride between grid lines along the axis + * @default 1 + * Minimum: 1 + */ + arraydtick?: number; + /** + * The starting index of grid lines along the axis + * @default 0 + * Minimum: 0 + */ + arraytick0?: number; + /** + * Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*. + * @default true + */ + autorange?: true | false | 'reversed'; + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ + autotypenumbers?: 'convert types' | 'strict'; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | Datum[][] | TypedArray; + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. + * @default 'trace' + */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array'; + /** + * @default 'value' + */ + cheatertype?: 'index' | 'value'; + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** + * The stride between grid lines along the axis + * @default 1 + * Minimum: 0 + */ + dtick?: number; + /** Determines whether or not a line is drawn at along the final value of this axis. If *true*, the end line is drawn on top of the grid lines. */ + endline?: boolean; + /** Sets the line color of the end line. */ + endlinecolor?: Color; + /** + * Sets the width (in px) of the end line. + * @default 1 + */ + endlinewidth?: number; + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. + * @default 'B' + */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** + * Determines whether or not this axis is zoom-able. If true, then zoom is disabled. + * @default false + */ + fixedrange?: boolean; + /** Sets the axis line color. */ + gridcolor?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + griddash?: Dash; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + gridwidth?: number; + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ + labelalias?: any; + /** + * Extra padding between label and the axis + * @default 10 + */ + labelpadding?: number; + /** Sets a axis label prefix. */ + labelprefix?: string; + /** Sets a axis label suffix. */ + labelsuffix?: string; + /** + * Sets the axis line color. + * @default '#444' + */ + linecolor?: Color; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + linewidth?: number; + /** + * Hide SI prefix for 10^n if |n| is below this number + * @default 3 + * Minimum: 0 + */ + minexponent?: number; + /** + * Sets the color of the grid lines. + * @default '#eee' + */ + minorgridcolor?: Color; + /** + * Sets the number of minor grid ticks per major grid tick + * @default 0 + * Minimum: 0 + */ + minorgridcount?: number; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + minorgriddash?: Dash; + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ + minorgridwidth?: number; + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ + nticks?: number; + /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. */ + range?: [any, any]; + /** + * If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. + * @default 'normal' + */ + rangemode?: 'normal' | 'tozero' | 'nonnegative'; + /** + * If "true", even 4-digit integers are separated + * @default false + */ + separatethousands?: boolean; + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ + showgrid?: boolean; + /** + * Determines whether or not a line bounding this axis is drawn. + * @default false + */ + showline?: boolean; + /** + * Determines whether axis labels are drawn on the low side, the high side, both, or neither side of the axis. + * @default 'start' + */ + showticklabels?: 'start' | 'end' | 'both' | 'none'; + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * @default 1 + * Range: [0, 1.3] + */ + smoothing?: number; + /** Determines whether or not a line is drawn at along the starting value of this axis. If *true*, the start line is drawn on top of the grid lines. */ + startline?: boolean; + /** Sets the line color of the start line. */ + startlinecolor?: Color; + /** + * Sets the width (in px) of the start line. + * @default 1 + */ + startlinewidth?: number; + /** + * The starting index of grid lines along the axis + * @default 0 + * Minimum: 0 + */ + tick0?: number; + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ + tickangle?: number | 'auto'; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** + * @default 'array' + */ + tickmode?: 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | Datum[][] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + title?: { + /** Sets this axis' title font. */ + font?: Font; + /** + * An additional amount by which to offset the title from the tick labels, given in pixels. + * @default 10 + */ + offset?: number; + /** Sets the title of this axis. */ + text?: string; + }; + /** + * Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. + * @default '-' + */ + type?: '-' | 'linear' | 'date' | 'category'; + }; + /** A two dimensional array of y coordinates at each carpet point. */ + b?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `b`. Builds a linear space of a coordinates. Use with `db` where `b0` is the starting coordinate and `db` the step. + * @default 0 + */ + b0?: number; + baxis?: { + /** + * The stride between grid lines along the axis + * @default 1 + * Minimum: 1 + */ + arraydtick?: number; + /** + * The starting index of grid lines along the axis + * @default 0 + * Minimum: 0 + */ + arraytick0?: number; + /** + * Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*. + * @default true + */ + autorange?: true | false | 'reversed'; + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ + autotypenumbers?: 'convert types' | 'strict'; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | Datum[][] | TypedArray; + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. + * @default 'trace' + */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array'; + /** + * @default 'value' + */ + cheatertype?: 'index' | 'value'; + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** + * The stride between grid lines along the axis + * @default 1 + * Minimum: 0 + */ + dtick?: number; + /** Determines whether or not a line is drawn at along the final value of this axis. If *true*, the end line is drawn on top of the grid lines. */ + endline?: boolean; + /** Sets the line color of the end line. */ + endlinecolor?: Color; + /** + * Sets the width (in px) of the end line. + * @default 1 + */ + endlinewidth?: number; + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. + * @default 'B' + */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** + * Determines whether or not this axis is zoom-able. If true, then zoom is disabled. + * @default false + */ + fixedrange?: boolean; + /** Sets the axis line color. */ + gridcolor?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + griddash?: Dash; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + gridwidth?: number; + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ + labelalias?: any; + /** + * Extra padding between label and the axis + * @default 10 + */ + labelpadding?: number; + /** Sets a axis label prefix. */ + labelprefix?: string; + /** Sets a axis label suffix. */ + labelsuffix?: string; + /** + * Sets the axis line color. + * @default '#444' + */ + linecolor?: Color; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + linewidth?: number; + /** + * Hide SI prefix for 10^n if |n| is below this number + * @default 3 + * Minimum: 0 + */ + minexponent?: number; + /** + * Sets the color of the grid lines. + * @default '#eee' + */ + minorgridcolor?: Color; + /** + * Sets the number of minor grid ticks per major grid tick + * @default 0 + * Minimum: 0 + */ + minorgridcount?: number; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + minorgriddash?: Dash; + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ + minorgridwidth?: number; + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ + nticks?: number; + /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. */ + range?: [any, any]; + /** + * If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. + * @default 'normal' + */ + rangemode?: 'normal' | 'tozero' | 'nonnegative'; + /** + * If "true", even 4-digit integers are separated + * @default false + */ + separatethousands?: boolean; + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ + showgrid?: boolean; + /** + * Determines whether or not a line bounding this axis is drawn. + * @default false + */ + showline?: boolean; + /** + * Determines whether axis labels are drawn on the low side, the high side, both, or neither side of the axis. + * @default 'start' + */ + showticklabels?: 'start' | 'end' | 'both' | 'none'; + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * @default 1 + * Range: [0, 1.3] + */ + smoothing?: number; + /** Determines whether or not a line is drawn at along the starting value of this axis. If *true*, the start line is drawn on top of the grid lines. */ + startline?: boolean; + /** Sets the line color of the start line. */ + startlinecolor?: Color; + /** + * Sets the width (in px) of the start line. + * @default 1 + */ + startlinewidth?: number; + /** + * The starting index of grid lines along the axis + * @default 0 + * Minimum: 0 + */ + tick0?: number; + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ + tickangle?: number | 'auto'; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** + * @default 'array' + */ + tickmode?: 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | Datum[][] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + title?: { + /** Sets this axis' title font. */ + font?: Font; + /** + * An additional amount by which to offset the title from the tick labels, given in pixels. + * @default 10 + */ + offset?: number; + /** Sets the title of this axis. */ + text?: string; + }; + /** + * Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. + * @default '-' + */ + type?: '-' | 'linear' | 'date' | 'category'; + }; + /** An identifier for this carpet, so that `scattercarpet` and `contourcarpet` traces can specify a carpet plot on which they lie */ + carpet?: string; + /** + * The shift applied to each successive row of data in creating a cheater plot. Only used if `x` is been omitted. + * @default 1 + */ + cheaterslope?: number; + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ + color?: Color; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the a coordinate step. See `a0` for more info. + * @default 1 + */ + da?: number; + /** + * Sets the b coordinate step. See `b0` for more info. + * @default 1 + */ + db?: number; + /** The default font used for axis & tick labels on this carpet */ + font?: Font; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + type?: 'carpet'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** A two dimensional array of x coordinates at each carpet point. If omitted, the plot is a cheater plot and the xaxis is hidden by default. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** A two dimensional array of y coordinates at each carpet point. */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ + zorder?: number; +} + +export interface ChoroplethData { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Only has an effect when `geojson` is set. Support nested property, for example *properties.name*. + * @default 'id' + */ + featureidkey?: string; + /** + * Sets a reference between this trace's geospatial coordinates and a geographic map. If *geo* (the default value), the geospatial coordinates refer to `layout.geo`. If *geo2*, the geospatial coordinates refer to `layout.geo2`, and so on. + * @default 'geo' + */ + geo?: string; + /** Sets optional GeoJSON data associated with this trace. If not given, the features on the base map are used. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*. */ + geojson?: any; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + /** + * Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*). + * @default 'ISO-3' + */ + locationmode?: 'ISO-3' | 'USA-states' | 'country names' | 'geojson-id'; + /** Sets the coordinates via location IDs or names. See `locationmode` for more info. */ + locations?: Datum[] | Datum[][] | TypedArray; + marker?: { + line?: _internal.Line; + /** + * Sets the opacity of the locations. + * @default 1 + * Range: [0, 1] + */ + opacity?: number | number[]; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + selected?: { + marker?: { + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + /** Sets the text elements associated with each location. */ + text?: string | string[]; + type?: 'choropleth'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + }; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the color values. */ + z?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ + zauto?: boolean; + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ + zmin?: number; +} + +export interface ChoroplethmapData { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** Determines if the choropleth polygons will be inserted before the layer with the specified ID. By default, choroplethmap traces are placed above the water layers. If set to '', the layer will be inserted above every existing layer. */ + below?: string; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Support nested property, for example *properties.name*. + * @default 'id' + */ + featureidkey?: string; + /** Sets the GeoJSON data associated with this trace. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*. */ + geojson?: any; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `properties` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + /** Sets which features found in *geojson* to plot using their feature `id` field. */ + locations?: Datum[] | Datum[][] | TypedArray; + marker?: { + line?: _internal.Line; + /** + * Sets the opacity of the locations. + * @default 1 + * Range: [0, 1] + */ + opacity?: number | number[]; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + selected?: { + marker?: { + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + /** + * Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on. + * @default 'map' + */ + subplot?: string; + /** Sets the text elements associated with each location. */ + text?: string | string[]; + type?: 'choroplethmap'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + }; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the color values. */ + z?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ + zauto?: boolean; + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ + zmin?: number; +} + +export interface ChoroplethmapboxData { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** Determines if the choropleth polygons will be inserted before the layer with the specified ID. By default, choroplethmapbox traces are placed above the water layers. If set to '', the layer will be inserted above every existing layer. */ + below?: string; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Support nested property, for example *properties.name*. + * @default 'id' + */ + featureidkey?: string; + /** Sets the GeoJSON data associated with this trace. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*. */ + geojson?: any; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `properties` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + /** Sets which features found in *geojson* to plot using their feature `id` field. */ + locations?: Datum[] | Datum[][] | TypedArray; + marker?: { + line?: _internal.Line; + /** + * Sets the opacity of the locations. + * @default 1 + * Range: [0, 1] + */ + opacity?: number | number[]; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + selected?: { + marker?: { + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + /** + * mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on. + * @default 'mapbox' + */ + subplot?: string; + /** Sets the text elements associated with each location. */ + text?: string | string[]; + type?: 'choroplethmapbox'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + }; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the color values. */ + z?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ + zauto?: boolean; + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ + zmin?: number; +} + +export interface ConeData { + /** + * Sets the cones' anchor with respect to their x/y/z positions. Note that *cm* denote the cone's center of mass which corresponds to 1/4 from the tail to tip. + * @default 'cm' + */ + anchor?: 'tip' | 'tail' | 'cm' | 'center'; + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here u/v/w norm) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as u/v/w norm. Has no effect when `cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'x+y+z+norm+text+name' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'u' | 'v' | 'w' | 'norm' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'u' | 'v' | 'w' | 'norm' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `norm` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + lighting?: _internal.Lighting; + lightposition?: { + /** + * Numeric vector, representing the X coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ + x?: number; + /** + * Numeric vector, representing the Y coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ + y?: number; + /** + * Numeric vector, representing the Z coordinate for each vertex. + * @default 0 + * Range: [-100000, 100000] + */ + z?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. + * @default 'scene' + */ + scene?: string; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + /** + * Determines whether `sizeref` is set as a *scaled* (i.e unitless) scalar (normalized by the max u/v/w norm in the vector field) or as *absolute* value (in the same units as the vector field). To display sizes in actual vector length use *raw*. + * @default 'scaled' + */ + sizemode?: 'scaled' | 'absolute' | 'raw'; + /** + * Adjusts the cone size scaling. The size of the cones is determined by their u/v/w norm multiplied a factor and `sizeref`. This factor (computed internally) corresponds to the minimum "time" to travel across two successive x/y/z positions at the average velocity of those two successive positions. All cones in a given trace use the same factor. With `sizemode` set to *raw*, its default value is *1*. With `sizemode` set to *scaled*, `sizeref` is unitless, its default value is *0.5*. With `sizemode` set to *absolute*, `sizeref` has the same units as the u/v/w vector field, its the default value is half the sample's maximum vector norm. + * Minimum: 0 + */ + sizeref?: number; + /** Sets the text elements associated with the cones. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + type?: 'cone'; + /** Sets the x components of the vector field. */ + u?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + uhoverformat?: string; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the y components of the vector field. */ + v?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + vhoverformat?: string; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the z components of the vector field. */ + w?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + whoverformat?: string; + /** Sets the x coordinates of the vector field and of the displayed cones. */ + x?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the y coordinates of the vector field and of the displayed cones. */ + y?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the z coordinates of the vector field and of the displayed cones. */ + z?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + zhoverformat?: string; +} + +export interface ContourData { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default false + */ + autocolorscale?: boolean; + /** + * Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`. + * @default true + */ + autocontour?: boolean; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data are filled in. It is defaulted to true if `z` is a one dimensional array otherwise it is defaulted to false. */ + connectgaps?: boolean; + /** + * Setting this also sets: autocontour = false, role = "object" + */ + contours?: { + /** + * Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *heatmap*, a heatmap gradient coloring is applied between each contour level. If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace. + * @default 'fill' + */ + coloring?: 'fill' | 'heatmap' | 'lines' | 'none'; + /** + * Sets the end contour level value. Must be more than `contours.start` + * Setting this also sets: ^autocontour = false + */ + end?: number; + /** Sets the font used for labeling the contour levels. The default color comes from the lines, if shown. The default family and size come from `layout.font`. */ + labelfont?: Font; + /** Sets the contour label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + labelformat?: string; + /** + * Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed. + * @default '=' + */ + operation?: '=' | '<' | '>=' | '>' | '<=' | '[]' | '()' | '[)' | '(]' | '][' | ')(' | '](' | ')['; + /** + * Determines whether to label the contour lines with their values. + * @default false + */ + showlabels?: boolean; + /** + * Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*. + * @default true + */ + showlines?: boolean; + /** + * Sets the step between each contour level. Must be positive. + * Minimum: 0 + * Setting this also sets: ^autocontour = false + */ + size?: number; + /** + * Sets the starting contour level value. Must be less than `contours.end` + * Setting this also sets: ^autocontour = false + */ + start?: number; + /** + * If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters. + * @default 'levels' + */ + type?: 'levels' | 'constraint'; + /** + * Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (`=,<,>=,>,<=`) *value* is expected to be a number. When `operation` is set to one of the interval values (`[],(),[),(],][,)(,](,)[`) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound. + * @default 0 + */ + value?: any; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + * Setting this also sets: xtype = "scaled" + */ + dx?: number; + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + * Setting this also sets: ytype = "scaled" + */ + dy?: number; + /** Sets the fill color if `contours.type` is *constraint*. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data have hover labels associated with them. + * @default true + */ + hoverongaps?: boolean; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: Datum[] | Datum[][] | TypedArray; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** Sets the color of the contour level. Has no effect if `contours.coloring` is set to *lines*. */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing. + * @default 1 + * Range: [0, 1.3] + */ + smoothing?: number; + /** + * Sets the contour line width in (in px) Defaults to *0.5* when `contours.type` is *levels*. Defaults to *2* when `contour.type` is *constraint*. + * Minimum: 0 + */ + width?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing. + * @default 15 + * Minimum: 1 + */ + ncontours?: number; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + /** Sets the text elements associated with each z value. */ + text?: Datum[] | Datum[][] | TypedArray; + /** For this trace it only has an effect if `coloring` is set to *heatmap*. Sets the text font. */ + textfont?: Font; + /** For this trace it only has an effect if `coloring` is set to *heatmap*. Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`. */ + texttemplate?: string; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + /** + * Transposes the z data. + * @default false + */ + transpose?: boolean; + type?: 'contour'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** + * Sets the x coordinates. + * Setting this also sets: xtype = "array" + */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + * Setting this also sets: xtype = "scaled" + */ + x0?: any; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ + xcalendar?: Calendar; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + * Setting this also sets: xtype = "scaled" + */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + * Setting this also sets: xtype = "scaled" + */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided). */ + xtype?: 'array' | 'scaled'; + /** + * Sets the y coordinates. + * Setting this also sets: ytype = "array" + */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + * Setting this also sets: ytype = "scaled" + */ + y0?: any; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ + ycalendar?: Calendar; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + * Setting this also sets: ytype = "scaled" + */ + yperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + yperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + * Setting this also sets: ytype = "scaled" + */ + yperiodalignment?: 'start' | 'middle' | 'end'; + /** If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided) */ + ytype?: 'array' | 'scaled'; + /** Sets the z data. */ + z?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ + zauto?: boolean; + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + zhoverformat?: string; + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ + zmin?: number; + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ + zorder?: number; +} + +export interface ContourcarpetData { + /** + * Sets the x coordinates. + * Setting this also sets: xtype = "array" + */ + a?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + * Setting this also sets: xtype = "scaled" + */ + a0?: any; + /** If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided). */ + atype?: 'array' | 'scaled'; + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default false + */ + autocolorscale?: boolean; + /** + * Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`. + * @default true + */ + autocontour?: boolean; + /** + * Sets the y coordinates. + * Setting this also sets: ytype = "array" + */ + b?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + * Setting this also sets: ytype = "scaled" + */ + b0?: any; + /** If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided) */ + btype?: 'array' | 'scaled'; + /** The `carpet` of the carpet axes on which this contour trace lies */ + carpet?: string; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** + * Setting this also sets: autocontour = false, role = "object" + */ + contours?: { + /** + * Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace. + * @default 'fill' + */ + coloring?: 'fill' | 'lines' | 'none'; + /** + * Sets the end contour level value. Must be more than `contours.start` + * Setting this also sets: ^autocontour = false + */ + end?: number; + /** Sets the font used for labeling the contour levels. The default color comes from the lines, if shown. The default family and size come from `layout.font`. */ + labelfont?: Font; + /** Sets the contour label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + labelformat?: string; + /** + * Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed. + * @default '=' + */ + operation?: '=' | '<' | '>=' | '>' | '<=' | '[]' | '()' | '[)' | '(]' | '][' | ')(' | '](' | ')['; + /** + * Determines whether to label the contour lines with their values. + * @default false + */ + showlabels?: boolean; + /** + * Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*. + * @default true + */ + showlines?: boolean; + /** + * Sets the step between each contour level. Must be positive. + * Minimum: 0 + * Setting this also sets: ^autocontour = false + */ + size?: number; + /** + * Sets the starting contour level value. Must be less than `contours.end` + * Setting this also sets: ^autocontour = false + */ + start?: number; + /** + * If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters. + * @default 'levels' + */ + type?: 'levels' | 'constraint'; + /** + * Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (`=,<,>=,>,<=`) *value* is expected to be a number. When `operation` is set to one of the interval values (`[],(),[),(],][,)(,](,)[`) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound. + * @default 0 + */ + value?: any; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + * Setting this also sets: xtype = "scaled" + */ + da?: number; + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + * Setting this also sets: ytype = "scaled" + */ + db?: number; + /** Sets the fill color if `contours.type` is *constraint*. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** Same as `text`. */ + hovertext?: Datum[] | Datum[][] | TypedArray; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** Sets the color of the contour level. Has no effect if `contours.coloring` is set to *lines*. */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing. + * @default 1 + * Range: [0, 1.3] + */ + smoothing?: number; + /** + * Sets the contour line width in (in px) Defaults to *0.5* when `contours.type` is *levels*. Defaults to *2* when `contour.type` is *constraint*. + * Minimum: 0 + */ + width?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing. + * @default 15 + * Minimum: 1 + */ + ncontours?: number; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + /** Sets the text elements associated with each z value. */ + text?: Datum[] | Datum[][] | TypedArray; + /** + * Transposes the z data. + * @default false + */ + transpose?: boolean; + type?: 'contourcarpet'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** Sets the z data. */ + z?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ + zauto?: boolean; + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ + zmin?: number; + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ + zorder?: number; +} + +export interface DensitymapData { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** Determines if the densitymap trace will be inserted before the layer with the specified ID. By default, densitymap traces are placed below the first layer of type symbol If set to '', the layer will be inserted above every existing layer. */ + below?: string; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'lon' | 'lat' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('lon' | 'lat' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** Sets the latitude coordinates (in degrees North). */ + lat?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + /** Sets the longitude coordinates (in degrees East). */ + lon?: Datum[] | Datum[][] | TypedArray; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the radius of influence of one `lon` / `lat` point in pixels. Increasing the value makes the densitymap trace smoother, but less detailed. + * @default 30 + * Minimum: 1 + */ + radius?: number | number[]; + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + /** + * Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on. + * @default 'map' + */ + subplot?: string; + /** Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + type?: 'densitymap'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the points' weight. For example, a value of 10 would be equivalent to having 10 points of weight 1 in the same spot */ + z?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ + zauto?: boolean; + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ + zmin?: number; +} + +export interface DensitymapboxData { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** Determines if the densitymapbox trace will be inserted before the layer with the specified ID. By default, densitymapbox traces are placed below the first layer of type symbol If set to '', the layer will be inserted above every existing layer. */ + below?: string; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'lon' | 'lat' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('lon' | 'lat' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** Sets the latitude coordinates (in degrees North). */ + lat?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + /** Sets the longitude coordinates (in degrees East). */ + lon?: Datum[] | Datum[][] | TypedArray; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the radius of influence of one `lon` / `lat` point in pixels. Increasing the value makes the densitymapbox trace smoother, but less detailed. + * @default 30 + * Minimum: 1 + */ + radius?: number | number[]; + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + /** + * mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on. + * @default 'mapbox' + */ + subplot?: string; + /** Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + type?: 'densitymapbox'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the points' weight. For example, a value of 10 would be equivalent to having 10 points of weight 1 in the same spot */ + z?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ + zauto?: boolean; + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ + zmin?: number; +} + +export interface FunnelData { + /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ + alignmentgroup?: string; + /** + * Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default true + */ + cliponaxis?: boolean; + connector?: { + /** Sets the fill color. */ + fillcolor?: Color; + line?: { + /** + * Sets the line color. + * @default '#444' + */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Sets the line width (in px). + * @default 0 + * Minimum: 0 + */ + width?: number; + }; + /** + * Determines if connector regions and lines are drawn. + * @default true + */ + visible?: boolean; + }; + /** + * Constrain the size of text inside or outside a bar to be no larger than the bar itself. + * @default 'both' + */ + constraintext?: 'inside' | 'outside' | 'both' | 'none'; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + */ + dx?: number; + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + */ + dy?: number; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'name' | 'x' | 'y' | 'text' | 'percent initial' | 'percent previous' | 'percent total' | 'all' | 'none' | 'skip' | (string & {}) | ('name' | 'x' | 'y' | 'text' | 'percent initial' | 'percent previous' | 'percent total' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `percentInitial`, `percentPrevious` and `percentTotal`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Determines if texts are kept at center or start/end points in `textposition` *inside* mode. + * @default 'middle' + */ + insidetextanchor?: 'end' | 'middle' | 'start'; + /** Sets the font used for `text` lying inside the bar. */ + insidetextfont?: FontArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + marker?: { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + line?: _internal.Line; + /** + * Sets the opacity of the bars. + * @default 1 + * Range: [0, 1] + */ + opacity?: number | number[]; + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ + showscale?: boolean; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Shifts the position where the bar is drawn (in position axis units). In *group* barmode, traces that set *offset* will be excluded and drawn in *overlay* mode instead. */ + offset?: number; + /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ + offsetgroup?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the orientation of the funnels. With *v* (*h*), the value of the each bar spans along the vertical (horizontal). By default funnels are tend to be oriented horizontally; unless only *y* array is presented or orientation is set to *v*. Also regarding graphs including only 'horizontal' funnels, *autorange* on the *y-axis* are set to *reversed*. */ + orientation?: 'v' | 'h'; + /** Sets the font used for `text` lying outside the bar. */ + outsidetextfont?: FontArray; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** + * Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. + * @default 0 + */ + textangle?: number | 'auto'; + /** Sets the font used for `text`. */ + textfont?: FontArray; + /** Determines which trace information appear on the graph. In the case of having multiple funnels, percentages & totals are computed separately (per trace). */ + textinfo?: 'label' | 'text' | 'percent initial' | 'percent previous' | 'percent total' | 'value' | 'none' | (string & {}); + /** + * Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. + * @default 'auto' + */ + textposition?: 'inside' | 'outside' | 'auto' | 'none' | ('inside' | 'outside' | 'auto' | 'none')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `percentInitial`, `percentPrevious`, `percentTotal`, `label` and `value`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + type?: 'funnel'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** + * Sets the bar width (in position axis units). + * Minimum: 0 + */ + width?: number; + /** Sets the x coordinates. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + */ + x0?: any; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the y coordinates. */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + */ + y0?: any; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ + yperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + yperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + */ + yperiodalignment?: 'start' | 'middle' | 'end'; + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ + zorder?: number; +} + +export interface FunnelareaData { + /** + * Sets the ratio between height and width + * @default 1 + * Minimum: 0 + */ + aspectratio?: number; + /** + * Sets the ratio between bottom length and maximum top length. + * @default 0.333 + * Range: [0, 1] + */ + baseratio?: number; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the label step. See `label0` for more info. + * @default 1 + */ + dlabel?: number; + domain?: Domain; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'label' | 'text' | 'value' | 'percent' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('label' | 'text' | 'value' | 'percent' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `text` and `percent`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** Sets the font used for `textinfo` lying inside the sector. */ + insidetextfont?: FontArray; + /** + * Alternate to `labels`. Builds a numeric set of labels. Use with `dlabel` where `label0` is the starting label and `dlabel` the step. + * @default 0 + */ + label0?: number; + /** Sets the sector labels. If `labels` entries are duplicated, we sum associated `values` or simply count occurrences if `values` is not provided. For other array attributes (including color) we use the first non-empty entry among all occurrences of the label. */ + labels?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + marker?: { + /** Sets the color of each sector. If not specified, the default trace color set is used to pick the sector colors. */ + colors?: Datum[] | Datum[][] | TypedArray; + line?: _internal.Line; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** If there are multiple funnelareas that should be sized according to their totals, link them by providing a non-empty group id here shared by every trace in the same group. */ + scalegroup?: string; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: Datum[] | Datum[][] | TypedArray; + /** Sets the font used for `textinfo`. */ + textfont?: FontArray; + /** Determines which trace information appear on the graph. */ + textinfo?: 'label' | 'text' | 'value' | 'percent' | 'none' | (string & {}); + /** + * Specifies the location of the `textinfo`. + * @default 'inside' + */ + textposition?: 'inside' | 'none' | ('inside' | 'none')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `text` and `percent`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + title?: { + /** Sets the font used for `title`. */ + font?: FontArray; + /** + * Specifies the location of the `title`. + * @default 'top center' + */ + position?: 'top left' | 'top center' | 'top right'; + /** Sets the title of the chart. If it is empty, no title is displayed. */ + text?: string; + }; + type?: 'funnelarea'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the values of the sectors. If omitted, we count occurrences of each label. */ + values?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface HeatmapData { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default false + */ + autocolorscale?: boolean; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data are filled in. It is defaulted to true if `z` is a one dimensional array and `zsmooth` is not false; otherwise it is defaulted to false. */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + * Setting this also sets: xtype = "scaled" + */ + dx?: number; + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + * Setting this also sets: ytype = "scaled" + */ + dy?: number; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data have hover labels associated with them. + * @default true + */ + hoverongaps?: boolean; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: Datum[] | Datum[][] | TypedArray; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + /** Sets the text elements associated with each z value. */ + text?: Datum[] | Datum[][] | TypedArray; + /** Sets the text font. */ + textfont?: Font; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`. */ + texttemplate?: string; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + /** + * Transposes the z data. + * @default false + */ + transpose?: boolean; + type?: 'heatmap'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** + * Sets the x coordinates. + * Setting this also sets: xtype = "array" + */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + * Setting this also sets: xtype = "scaled" + */ + x0?: any; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ + xcalendar?: Calendar; + /** + * Sets the horizontal gap (in pixels) between bricks. + * @default 0 + * Minimum: 0 + */ + xgap?: number; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + * Setting this also sets: xtype = "scaled" + */ + xperiod?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. + * Setting this also sets: xtype = "scaled" + */ + xperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + * Setting this also sets: xtype = "scaled" + */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided). */ + xtype?: 'array' | 'scaled'; + /** + * Sets the y coordinates. + * Setting this also sets: ytype = "array" + */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + * Setting this also sets: ytype = "scaled" + */ + y0?: any; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ + ycalendar?: Calendar; + /** + * Sets the vertical gap (in pixels) between bricks. + * @default 0 + * Minimum: 0 + */ + ygap?: number; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + * Setting this also sets: ytype = "scaled" + */ + yperiod?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. + * Setting this also sets: ytype = "scaled" + */ + yperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + * Setting this also sets: ytype = "scaled" + */ + yperiodalignment?: 'start' | 'middle' | 'end'; + /** If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided) */ + ytype?: 'array' | 'scaled'; + /** Sets the z data. */ + z?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ + zauto?: boolean; + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + zhoverformat?: string; + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ + zmin?: number; + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ + zorder?: number; + /** + * Picks a smoothing algorithm use to smooth `z` data. + * @default false + */ + zsmooth?: 'fast' | 'best' | false; +} + +export interface HistogramData { + /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ + alignmentgroup?: string; + /** Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobinx` is not needed. However, we accept `autobinx: true` or `false` and will update `xbins` accordingly before deleting `autobinx` from the trace. */ + autobinx?: boolean; + /** Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobiny` is not needed. However, we accept `autobiny: true` or `false` and will update `ybins` accordingly before deleting `autobiny` from the trace. */ + autobiny?: boolean; + /** Set a group of histogram traces which will have compatible bin settings. Note that traces on the same subplot and with the same *orientation* under `barmode` *stack*, *relative* and *group* are forced into the same bingroup, Using `bingroup`, traces under `barmode` *overlay* and on different axes (of the same axis type) can have compatible bin settings. Note that histogram and histogram2d* trace can share the same `bingroup` */ + bingroup?: string; + /** + * Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default true + */ + cliponaxis?: boolean; + /** + * Constrain the size of text inside or outside a bar to be no larger than the bar itself. + * @default 'both' + */ + constraintext?: 'inside' | 'outside' | 'both' | 'none'; + cumulative?: { + /** + * Only applies if cumulative is enabled. Sets whether the current bin is included, excluded, or has half of its value included in the current cumulative value. *include* is the default for compatibility with various other tools, however it introduces a half-bin bias to the results. *exclude* makes the opposite half-bin bias, and *half* removes it. + * @default 'include' + */ + currentbin?: 'include' | 'exclude' | 'half'; + /** + * Only applies if cumulative is enabled. If *increasing* (default) we sum all prior bins, so the result increases from left to right. If *decreasing* we sum later bins so the result decreases from left to right. + * @default 'increasing' + */ + direction?: 'increasing' | 'decreasing'; + /** + * If true, display the cumulative distribution by summing the binned values. Use the `direction` and `centralbin` attributes to tune the accumulation method. Note: in this mode, the *density* `histnorm` settings behave the same as their equivalents without *density*: ** and *density* both rise to the number of data points, and *probability* and *probability density* both rise to the number of sample points. + * @default false + */ + enabled?: boolean; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + error_x?: { + /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ + array?: Datum[] | Datum[][] | TypedArray; + /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ + arrayminus?: Datum[] | Datum[][] | TypedArray; + /** Sets the stroke color of the error bars. */ + color?: Color; + copy_ystyle?: boolean; + /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ + symmetric?: boolean; + /** + * Sets the thickness (in px) of the error bars. + * @default 2 + * Minimum: 0 + */ + thickness?: number; + /** + * @default 0 + * Minimum: 0 + */ + traceref?: number; + /** + * @default 0 + * Minimum: 0 + */ + tracerefminus?: number; + /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ + type?: 'percent' | 'constant' | 'sqrt' | 'data'; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. + * @default 10 + * Minimum: 0 + */ + value?: number; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars + * @default 10 + * Minimum: 0 + */ + valueminus?: number; + /** Determines whether or not this set of error bars is visible. */ + visible?: boolean; + /** + * Sets the width (in px) of the cross-bar at both ends of the error bars. + * Minimum: 0 + */ + width?: number; + }; + error_y?: _internal.ErrorY; + /** + * Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively. + * @default 'count' + */ + histfunc?: 'count' | 'sum' | 'avg' | 'min' | 'max'; + /** Specifies the type of normalization used for this histogram trace. If **, the span of each bar corresponds to the number of occurrences (i.e. the number of data points lying inside the bins). If *percent* / *probability*, the span of each bar corresponds to the percentage / fraction of occurrences with respect to the total number of sample points (here, the sum of all bin HEIGHTS equals 100% / 1). If *density*, the span of each bar corresponds to the number of occurrences in a bin divided by the size of the bin interval (here, the sum of all bin AREAS equals the total number of sample points). If *probability density*, the area of each bar corresponds to the probability that an event will fall into the corresponding bin (here, the sum of all bin AREAS equals 1). */ + histnorm?: '' | 'percent' | 'probability' | 'density' | 'probability density'; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `binNumber` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Determines if texts are kept at center or start/end points in `textposition` *inside* mode. + * @default 'end' + */ + insidetextanchor?: 'end' | 'middle' | 'start'; + /** Sets the font used for `text` lying inside the bar. */ + insidetextfont?: Font; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + marker?: { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** Sets the rounding of corners. May be an integer number of pixels, or a percentage of bar width (as a string ending in %). Defaults to `layout.barcornerradius`. In stack or relative barmode, the first trace to set cornerradius is used for the whole stack. */ + cornerradius?: any; + line?: _internal.Line; + /** + * Sets the opacity of the bars. + * @default 1 + * Range: [0, 1] + */ + opacity?: number | number[]; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ + showscale?: boolean; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `xbins.size` is provided. + * @default 0 + * Minimum: 0 + */ + nbinsx?: number; + /** + * Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `ybins.size` is provided. + * @default 0 + * Minimum: 0 + */ + nbinsy?: number; + /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ + offsetgroup?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the orientation of the bars. With *v* (*h*), the value of the each bar spans along the vertical (horizontal). */ + orientation?: 'v' | 'h'; + /** Sets the font used for `text` lying outside the bar. */ + outsidetextfont?: Font; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** Sets hover text elements associated with each bar. If a single string, the same string appears over all bars. If an array of string, the items are mapped in order to the this trace's coordinates. */ + text?: string | string[]; + /** + * Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. + * @default 'auto' + */ + textangle?: number | 'auto'; + /** Sets the text font. */ + textfont?: Font; + /** + * Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. + * @default 'auto' + */ + textposition?: 'inside' | 'outside' | 'auto' | 'none'; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label` and `value`. */ + texttemplate?: string; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + type?: 'histogram'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + }; + textfont?: Font; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the sample data to be binned on the x axis. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + xbins?: { + /** Sets the end value for the x axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ + end?: any; + /** Sets the size of each x axis bin. Default behavior: If `nbinsx` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsx` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided, the sample data from all traces is combined to determine `size` as described above. */ + size?: any; + /** Sets the starting value for the x axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. If multiple non-overlaying histograms share a subplot, the first explicit `start` is used exactly and all others are shifted down (if necessary) to differ from that one by an integer number of bins. */ + start?: any; + }; + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ + xcalendar?: Calendar; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the sample data to be binned on the y axis. */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + ybins?: { + /** Sets the end value for the y axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ + end?: any; + /** Sets the size of each y axis bin. Default behavior: If `nbinsy` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsy` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided, the sample data from all traces is combined to determine `size` as described above. */ + size?: any; + /** Sets the starting value for the y axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. If multiple non-overlaying histograms share a subplot, the first explicit `start` is used exactly and all others are shifted down (if necessary) to differ from that one by an integer number of bins. */ + start?: any; + }; + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ + ycalendar?: Calendar; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ + zorder?: number; +} + +export interface Histogram2dData { + /** Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobinx` is not needed. However, we accept `autobinx: true` or `false` and will update `xbins` accordingly before deleting `autobinx` from the trace. */ + autobinx?: boolean; + /** Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobiny` is not needed. However, we accept `autobiny: true` or `false` and will update `ybins` accordingly before deleting `autobiny` from the trace. */ + autobiny?: boolean; + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default false + */ + autocolorscale?: boolean; + /** Set the `xbingroup` and `ybingroup` default prefix For example, setting a `bingroup` of *1* on two histogram2d traces will make them their x-bins and y-bins match separately. */ + bingroup?: string; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively. + * @default 'count' + */ + histfunc?: 'count' | 'sum' | 'avg' | 'min' | 'max'; + /** Specifies the type of normalization used for this histogram trace. If **, the span of each bar corresponds to the number of occurrences (i.e. the number of data points lying inside the bins). If *percent* / *probability*, the span of each bar corresponds to the percentage / fraction of occurrences with respect to the total number of sample points (here, the sum of all bin HEIGHTS equals 100% / 1). If *density*, the span of each bar corresponds to the number of occurrences in a bin divided by the size of the bin interval (here, the sum of all bin AREAS equals the total number of sample points). If *probability density*, the area of each bar corresponds to the probability that an event will fall into the corresponding bin (here, the sum of all bin AREAS equals 1). */ + histnorm?: '' | 'percent' | 'probability' | 'density' | 'probability density'; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `z` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + marker?: { + /** Sets the aggregation data. */ + color?: Datum[] | Datum[][] | TypedArray; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `xbins.size` is provided. + * @default 0 + * Minimum: 0 + */ + nbinsx?: number; + /** + * Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `ybins.size` is provided. + * @default 0 + * Minimum: 0 + */ + nbinsy?: number; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + /** Sets the text font. */ + textfont?: Font; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `z` */ + texttemplate?: string; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + type?: 'histogram2d'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the sample data to be binned on the x axis. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** Set a group of histogram traces which will have compatible x-bin settings. Using `xbingroup`, histogram2d and histogram2dcontour traces (on axes of the same axis type) can have compatible x-bin settings. Note that the same `xbingroup` value can be used to set (1D) histogram `bingroup` */ + xbingroup?: string; + xbins?: { + /** Sets the end value for the x axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ + end?: any; + /** Sets the size of each x axis bin. Default behavior: If `nbinsx` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsx` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). */ + size?: any; + /** Sets the starting value for the x axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. */ + start?: any; + }; + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ + xcalendar?: Calendar; + /** + * Sets the horizontal gap (in pixels) between bricks. + * @default 0 + * Minimum: 0 + */ + xgap?: number; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the sample data to be binned on the y axis. */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** Set a group of histogram traces which will have compatible y-bin settings. Using `ybingroup`, histogram2d and histogram2dcontour traces (on axes of the same axis type) can have compatible y-bin settings. Note that the same `ybingroup` value can be used to set (1D) histogram `bingroup` */ + ybingroup?: string; + ybins?: { + /** Sets the end value for the y axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ + end?: any; + /** Sets the size of each y axis bin. Default behavior: If `nbinsy` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsy` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). */ + size?: any; + /** Sets the starting value for the y axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. */ + start?: any; + }; + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ + ycalendar?: Calendar; + /** + * Sets the vertical gap (in pixels) between bricks. + * @default 0 + * Minimum: 0 + */ + ygap?: number; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the aggregation data. */ + z?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ + zauto?: boolean; + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + zhoverformat?: string; + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ + zmin?: number; + /** + * Picks a smoothing algorithm use to smooth `z` data. + * @default false + */ + zsmooth?: 'fast' | 'best' | false; +} + +export interface Histogram2dcontourData { + /** Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobinx` is not needed. However, we accept `autobinx: true` or `false` and will update `xbins` accordingly before deleting `autobinx` from the trace. */ + autobinx?: boolean; + /** Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobiny` is not needed. However, we accept `autobiny: true` or `false` and will update `ybins` accordingly before deleting `autobiny` from the trace. */ + autobiny?: boolean; + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`. + * @default true + */ + autocontour?: boolean; + /** Set the `xbingroup` and `ybingroup` default prefix For example, setting a `bingroup` of *1* on two histogram2d traces will make them their x-bins and y-bins match separately. */ + bingroup?: string; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** + * Setting this also sets: autocontour = false, role = "object" + */ + contours?: { + /** + * Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *heatmap*, a heatmap gradient coloring is applied between each contour level. If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace. + * @default 'fill' + */ + coloring?: 'fill' | 'heatmap' | 'lines' | 'none'; + /** + * Sets the end contour level value. Must be more than `contours.start` + * Setting this also sets: ^autocontour = false + */ + end?: number; + /** Sets the font used for labeling the contour levels. The default color comes from the lines, if shown. The default family and size come from `layout.font`. */ + labelfont?: Font; + /** Sets the contour label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + labelformat?: string; + /** + * Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed. + * @default '=' + */ + operation?: '=' | '<' | '>=' | '>' | '<=' | '[]' | '()' | '[)' | '(]' | '][' | ')(' | '](' | ')['; + /** + * Determines whether to label the contour lines with their values. + * @default false + */ + showlabels?: boolean; + /** + * Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*. + * @default true + */ + showlines?: boolean; + /** + * Sets the step between each contour level. Must be positive. + * Minimum: 0 + * Setting this also sets: ^autocontour = false + */ + size?: number; + /** + * Sets the starting contour level value. Must be less than `contours.end` + * Setting this also sets: ^autocontour = false + */ + start?: number; + /** + * If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters. + * @default 'levels' + */ + type?: 'levels' | 'constraint'; + /** + * Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (`=,<,>=,>,<=`) *value* is expected to be a number. When `operation` is set to one of the interval values (`[],(),[),(],][,)(,](,)[`) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound. + * @default 0 + */ + value?: any; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively. + * @default 'count' + */ + histfunc?: 'count' | 'sum' | 'avg' | 'min' | 'max'; + /** Specifies the type of normalization used for this histogram trace. If **, the span of each bar corresponds to the number of occurrences (i.e. the number of data points lying inside the bins). If *percent* / *probability*, the span of each bar corresponds to the percentage / fraction of occurrences with respect to the total number of sample points (here, the sum of all bin HEIGHTS equals 100% / 1). If *density*, the span of each bar corresponds to the number of occurrences in a bin divided by the size of the bin interval (here, the sum of all bin AREAS equals the total number of sample points). If *probability density*, the area of each bar corresponds to the probability that an event will fall into the corresponding bin (here, the sum of all bin AREAS equals 1). */ + histnorm?: '' | 'percent' | 'probability' | 'density' | 'probability density'; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `z` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** Sets the color of the contour level. Has no effect if `contours.coloring` is set to *lines*. */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing. + * @default 1 + * Range: [0, 1.3] + */ + smoothing?: number; + /** + * Sets the contour line width in (in px) + * @default 0.5 + * Minimum: 0 + */ + width?: number; + }; + marker?: { + /** Sets the aggregation data. */ + color?: Datum[] | Datum[][] | TypedArray; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `xbins.size` is provided. + * @default 0 + * Minimum: 0 + */ + nbinsx?: number; + /** + * Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `ybins.size` is provided. + * @default 0 + * Minimum: 0 + */ + nbinsy?: number; + /** + * Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing. + * @default 15 + * Minimum: 1 + */ + ncontours?: number; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + /** For this trace it only has an effect if `coloring` is set to *heatmap*. Sets the text font. */ + textfont?: Font; + /** For this trace it only has an effect if `coloring` is set to *heatmap*. Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`. */ + texttemplate?: string; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + type?: 'histogram2dcontour'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the sample data to be binned on the x axis. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** Set a group of histogram traces which will have compatible x-bin settings. Using `xbingroup`, histogram2d and histogram2dcontour traces (on axes of the same axis type) can have compatible x-bin settings. Note that the same `xbingroup` value can be used to set (1D) histogram `bingroup` */ + xbingroup?: string; + xbins?: { + /** Sets the end value for the x axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ + end?: any; + /** Sets the size of each x axis bin. Default behavior: If `nbinsx` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsx` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). */ + size?: any; + /** Sets the starting value for the x axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. */ + start?: any; + }; + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ + xcalendar?: Calendar; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the sample data to be binned on the y axis. */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** Set a group of histogram traces which will have compatible y-bin settings. Using `ybingroup`, histogram2d and histogram2dcontour traces (on axes of the same axis type) can have compatible y-bin settings. Note that the same `ybingroup` value can be used to set (1D) histogram `bingroup` */ + ybingroup?: string; + ybins?: { + /** Sets the end value for the y axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ + end?: any; + /** Sets the size of each y axis bin. Default behavior: If `nbinsy` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsy` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). */ + size?: any; + /** Sets the starting value for the y axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. */ + start?: any; + }; + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ + ycalendar?: Calendar; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the aggregation data. */ + z?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ + zauto?: boolean; + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + zhoverformat?: string; + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ + zmin?: number; +} + +export interface IcicleData { + /** + * Determines how the items in `values` are summed. When set to *total*, items in `values` are taken to be value of all its descendants. When set to *remainder*, items in `values` corresponding to the root and the branches sectors are taken to be the extra part not part of the sum of the values at their leaves. + * @default 'remainder' + */ + branchvalues?: 'remainder' | 'total'; + /** + * Determines default for `values` when it is not provided, by inferring a 1 for each of the *leaves* and/or *branches*, otherwise 0. + * @default 'leaves' + */ + count?: 'branches' | 'leaves' | (string & {}); + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + domain?: Domain; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'label+text+value+name' + */ + hoverinfo?: 'label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}) | ('label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry` and `percentParent`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** Sets the font used for `textinfo` lying inside the sector. */ + insidetextfont?: FontArray; + /** Sets the labels of each of the sectors. */ + labels?: Datum[] | Datum[][] | TypedArray; + leaf?: { + /** + * Sets the opacity of the leaves. With colorscale it is defaulted to 1; otherwise it is defaulted to 0.7 + * Range: [0, 1] + */ + opacity?: number; + }; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + /** Sets the level from which this trace hierarchy is rendered. Set `level` to `''` to start from the root node in the hierarchy. Must be an "id" if `ids` is filled in, otherwise plotly attempts to find a matching item in `labels`. */ + level?: any; + marker?: { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if colors is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here colors) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if colors is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if colors is set to a numerical array. Value should have the same units as colors. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors. */ + colors?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + line?: _internal.Line; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + /** + * Reverses the color mapping if true. Has an effect only if colors is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if colors is set to a numerical array. + * @default false + */ + showscale?: boolean; + }; + /** + * Sets the number of rendered sectors from any given `level`. Set `maxdepth` to *-1* to render all the levels in the hierarchy. + * @default -1 + */ + maxdepth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented on top left corner of a treemap graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used. */ + outsidetextfont?: FontArray; + /** Sets the parent sectors for each of the sectors. Empty string items '' are understood to reference the root node in the hierarchy. If `ids` is filled, `parents` items are understood to be "ids" themselves. When `ids` is not set, plotly attempts to find matching items in `labels`, but beware they must be unique. */ + parents?: Datum[] | Datum[][] | TypedArray; + pathbar?: { + /** + * Determines which shape is used for edges between `barpath` labels. + * @default '>' + */ + edgeshape?: '>' | '<' | '|' | '/' | '\\'; + /** + * Determines on which side of the treemap the `pathbar` should be presented. + * @default 'top' + */ + side?: 'top' | 'bottom'; + /** Sets the font used inside `pathbar`. */ + textfont?: FontArray; + /** + * Sets the thickness of `pathbar` (in px). If not specified the `pathbar.textfont.size` is used with 3 pixles extra padding on each side. + * Minimum: 12 + */ + thickness?: number; + /** + * Determines if the path bar is drawn i.e. outside the trace `domain` and with one pixel gap. + * @default true + */ + visible?: boolean; + }; + root?: Font; + /** + * Determines whether or not the sectors are reordered from largest to smallest. + * @default true + */ + sort?: boolean; + /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: Datum[] | Datum[][] | TypedArray; + /** Sets the font used for `textinfo`. */ + textfont?: FontArray; + /** Determines which trace information appear on the graph. */ + textinfo?: 'label' | 'text' | 'value' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'none' | (string & {}); + /** + * Sets the positions of the `text` elements. + * @default 'top left' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + tiling?: { + /** Determines if the positions obtained from solver are flipped on each axis. */ + flip?: 'x' | 'y' | (string & {}); + /** + * When set in conjunction with `tiling.flip`, determines on which side the root nodes are drawn in the chart. If `tiling.orientation` is *v* and `tiling.flip` is **, the root nodes appear at the top. If `tiling.orientation` is *v* and `tiling.flip` is *y*, the root nodes appear at the bottom. If `tiling.orientation` is *h* and `tiling.flip` is **, the root nodes appear at the left. If `tiling.orientation` is *h* and `tiling.flip` is *x*, the root nodes appear at the right. + * @default 'h' + */ + orientation?: 'v' | 'h'; + /** + * Sets the inner padding (in px). + * @default 0 + * Minimum: 0 + */ + pad?: number; + }; + type?: 'icicle'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the values associated with each of the sectors. Use with `branchvalues` to determine how the values are summed. */ + values?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface ImageData { + /** Color model used to map the numerical color components described in `z` into colors. If `source` is specified, this attribute will be set to `rgba256` otherwise it defaults to `rgb`. */ + colormodel?: 'rgb' | 'rgba' | 'rgba256' | 'hsl' | 'hsla'; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Set the pixel's horizontal size. + * @default 1 + */ + dx?: number; + /** + * Set the pixel's vertical size + * @default 1 + */ + dy?: number; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'x+y+z+text+name' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'color' | 'name' | 'text' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'color' | 'name' | 'text' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `z`, `color` and `colormodel`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: Datum[] | Datum[][] | TypedArray; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Specifies the data URI of the image to be visualized. The URI consists of "data:image/[][;base64\\]," */ + source?: string; + /** Sets the text elements associated with each z value. */ + text?: Datum[] | Datum[][] | TypedArray; + type?: 'image'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** + * Set the image's x position. The left edge of the image (or the right edge if the x axis is reversed or dx is negative) will be found at xmin=x0-dx/2 + * @default 0 + */ + x0?: any; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** + * Set the image's y position. The top edge of the image (or the bottom edge if the y axis is NOT reversed or if dy is negative) will be found at ymin=y0-dy/2. By default when an image trace is included, the y axis will be reversed so that the image is right-side-up, but you can disable this by setting yaxis.autorange=true or by providing an explicit y axis range. + * @default 0 + */ + y0?: any; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** A 2-dimensional array in which each element is an array of 3 or 4 numbers representing a color. */ + z?: Datum[] | Datum[][] | TypedArray; + /** Array defining the higher bound for each color component. Note that the default value will depend on the colormodel. For the `rgb` colormodel, it is [255, 255, 255]. For the `rgba` colormodel, it is [255, 255, 255, 1]. For the `rgba256` colormodel, it is [255, 255, 255, 255]. For the `hsl` colormodel, it is [360, 100, 100]. For the `hsla` colormodel, it is [360, 100, 100, 1]. */ + zmax?: [number, number, number, number]; + /** Array defining the lower bound for each color component. Note that the default value will depend on the colormodel. For the `rgb` colormodel, it is [0, 0, 0]. For the `rgba` colormodel, it is [0, 0, 0, 0]. For the `rgba256` colormodel, it is [0, 0, 0, 0]. For the `hsl` colormodel, it is [0, 0, 0]. For the `hsla` colormodel, it is [0, 0, 0, 0]. */ + zmin?: [number, number, number, number]; + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ + zorder?: number; + /** + * Picks a smoothing algorithm used to smooth `z` data. This only applies for image traces that use the `source` attribute. + * @default false + */ + zsmooth?: 'fast' | false; +} + +export interface IndicatorData { + /** Sets the horizontal alignment of the `text` within the box. Note that this attribute has no effect if an angular gauge is displayed: in this case, it is always centered */ + align?: 'left' | 'center' | 'right'; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + delta?: { + decreasing?: { + /** + * Sets the color for increasing value. + * @default '#FF4136' + */ + color?: Color; + /** + * Sets the symbol to display for increasing value + * @default '▼' + */ + symbol?: string; + }; + /** Set the font used to display the delta */ + font?: Font; + increasing?: { + /** + * Sets the color for increasing value. + * @default '#3D9970' + */ + color?: Color; + /** + * Sets the symbol to display for increasing value + * @default '▲' + */ + symbol?: string; + }; + /** + * Sets the position of delta with respect to the number. + * @default 'bottom' + */ + position?: 'top' | 'bottom' | 'left' | 'right'; + /** Sets a prefix appearing before the delta. */ + prefix?: string; + /** Sets the reference value to compute the delta. By default, it is set to the current value. */ + reference?: number; + /** + * Show relative change + * @default false + */ + relative?: boolean; + /** Sets a suffix appearing next to the delta. */ + suffix?: string; + /** Sets the value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + valueformat?: string; + }; + domain?: Domain; + /** The gauge of the Indicator plot. */ + gauge?: { + axis?: { + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ + dtick?: any; + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ + labelalias?: any; + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ + minexponent?: number; + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ + nticks?: number; + /** Sets the range of this axis. */ + range?: [number, number]; + /** + * If "true", even 4-digit integers are separated + * @default false + */ + separatethousands?: boolean; + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ + showticklabels?: boolean; + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ + tick0?: any; + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ + tickangle?: number | 'auto'; + /** + * Sets the tick color. + * @default '#444' + */ + tickcolor?: Color; + /** Sets the color bar's tick label font */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ + ticklabelstep?: number; + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** + * Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. + * @default 'outside' + */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | Datum[][] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ + tickwidth?: number; + /** + * A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false + * @default true + */ + visible?: boolean; + }; + /** Set the appearance of the gauge's value */ + bar?: { + /** + * Sets the background color of the arc. + * @default 'green' + */ + color?: Color; + line?: _internal.ErrorY; + /** + * Sets the thickness of the bar as a fraction of the total thickness of the gauge. + * @default 1 + * Range: [0, 1] + */ + thickness?: number; + }; + /** Sets the gauge background color. */ + bgcolor?: Color; + /** + * Sets the color of the border enclosing the gauge. + * @default '#444' + */ + bordercolor?: Color; + /** + * Sets the width (in px) of the border enclosing the gauge. + * @default 1 + * Minimum: 0 + */ + borderwidth?: number; + /** + * Set the shape of the gauge + * @default 'angular' + */ + shape?: 'angular' | 'bullet'; + steps?: Array<{ + /** Sets the background color of the arc. */ + color?: Color; + line?: _internal.ErrorY; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Sets the range of this axis. */ + range?: [number, number]; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** + * Sets the thickness of the bar as a fraction of the total thickness of the gauge. + * @default 1 + * Range: [0, 1] + */ + thickness?: number; + }>; + threshold?: { + line?: _internal.ErrorY; + /** + * Sets the thickness of the threshold line as a fraction of the thickness of the gauge. + * @default 0.85 + * Range: [0, 1] + */ + thickness?: number; + /** + * Sets a treshold value drawn as a line. + * @default false + */ + value?: number; + }; + }; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** + * Determines how the value is displayed on the graph. `number` displays the value numerically in text. `delta` displays the difference to a reference value in text. Finally, `gauge` displays the value graphically on an axis. + * @default 'number' + */ + mode?: 'number' | 'delta' | 'gauge' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + number?: { + /** Set the font used to display main number */ + font?: Font; + /** Sets a prefix appearing before the number. */ + prefix?: string; + /** Sets a suffix appearing next to the number. */ + suffix?: string; + /** Sets the value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + valueformat?: string; + }; + title?: { + /** Sets the horizontal alignment of the title. It defaults to `center` except for bullet charts for which it defaults to right. */ + align?: 'left' | 'center' | 'right'; + /** Set the font used to display the title */ + font?: Font; + /** Sets the title of this indicator. */ + text?: string; + }; + type?: 'indicator'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the number to be displayed. */ + value?: number; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface IsosurfaceData { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + caps?: { + x?: { + /** + * Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ + fill?: number; + /** + * Sets the fill ratio of the `slices`. The default fill value of the x `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default true + */ + show?: boolean; + }; + y?: { + /** + * Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ + fill?: number; + /** + * Sets the fill ratio of the `slices`. The default fill value of the y `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default true + */ + show?: boolean; + }; + z?: { + /** + * Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ + fill?: number; + /** + * Sets the fill ratio of the `slices`. The default fill value of the z `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default true + */ + show?: boolean; + }; + }; + /** + * Determines whether or not the color domain is computed with respect to the input data (here `value`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Value should have the same units as `value` and if set, `cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as `value`. Has no effect when `cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as `value` and if set, `cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + contour?: { + /** + * Sets the color of the contour lines. + * @default '#444' + */ + color?: Color; + /** + * Sets whether or not dynamic contours are shown on hover + * @default false + */ + show?: boolean; + /** + * Sets the width of the contour lines. + * @default 2 + * Range: [1, 16] + */ + width?: number; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections. + * @default true + */ + flatshading?: boolean; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** Sets the maximum boundary for iso-surface plot. */ + isomax?: number; + /** Sets the minimum boundary for iso-surface plot. */ + isomin?: number; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + lighting?: _internal.Lighting; + lightposition?: { + /** + * Numeric vector, representing the X coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ + x?: number; + /** + * Numeric vector, representing the Y coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ + y?: number; + /** + * Numeric vector, representing the Z coordinate for each vertex. + * @default 0 + * Range: [-100000, 100000] + */ + z?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. + * @default 'scene' + */ + scene?: string; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + slices?: { + x?: { + /** + * Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ + fill?: number; + /** + * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis x except start and end. + * @default [] + */ + locations?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not slice planes about the x dimension are drawn. + * @default false + */ + show?: boolean; + }; + y?: { + /** + * Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ + fill?: number; + /** + * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis y except start and end. + * @default [] + */ + locations?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not slice planes about the y dimension are drawn. + * @default false + */ + show?: boolean; + }; + z?: { + /** + * Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ + fill?: number; + /** + * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis z except start and end. + * @default [] + */ + locations?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not slice planes about the z dimension are drawn. + * @default false + */ + show?: boolean; + }; + }; + spaceframe?: { + /** + * Sets the fill ratio of the `spaceframe` elements. The default fill value is 0.15 meaning that only 15% of the area of every faces of tetras would be shaded. Applying a greater `fill` ratio would allow the creation of stronger elements or could be sued to have entirely closed areas (in case of using 1). + * @default 0.15 + * Range: [0, 1] + */ + fill?: number; + /** + * Displays/hides tetrahedron shapes between minimum and maximum iso-values. Often useful when either caps or surfaces are disabled or filled with values less than 1. + * @default false + */ + show?: boolean; + }; + surface?: { + /** + * Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn. + * @default 2 + * Minimum: 1 + */ + count?: number; + /** + * Sets the fill ratio of the iso-surface. The default fill value of the surface is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ + fill?: number; + /** + * Sets the surface pattern of the iso-surface 3-D sections. The default pattern of the surface is `all` meaning that the rest of surface elements would be shaded. The check options (either 1 or 2) could be used to draw half of the squares on the surface. Using various combinations of capital `A`, `B`, `C`, `D` and `E` may also be used to reduce the number of triangles on the iso-surfaces and creating other patterns of interest. + * @default 'all' + */ + pattern?: 'A' | 'B' | 'C' | 'D' | 'E' | 'all' | 'odd' | 'even' | (string & {}); + /** + * Hides/displays surfaces between minimum and maximum iso-values. + * @default true + */ + show?: boolean; + }; + /** Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + type?: 'isosurface'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the 4th dimension (value) of the vertices. */ + value?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + valuehoverformat?: string; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the X coordinates of the vertices on X axis. */ + x?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the Y coordinates of the vertices on Y axis. */ + y?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the Z coordinates of the vertices on Z axis. */ + z?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + zhoverformat?: string; +} + +export interface Mesh3dData { + /** + * Determines how the mesh surface triangles are derived from the set of vertices (points) represented by the `x`, `y` and `z` arrays, if the `i`, `j`, `k` arrays are not supplied. For general use of `mesh3d` it is preferred that `i`, `j`, `k` are supplied. If *-1*, Delaunay triangulation is used, which is mainly suitable if the mesh is a single, more or less layer surface that is perpendicular to `delaunayaxis`. In case the `delaunayaxis` intersects the mesh surface at more than one point it will result triangles that are very long in the dimension of `delaunayaxis`. If *>0*, the alpha-shape algorithm is used. In this case, the positive `alphahull` value signals the use of the alpha-shape algorithm, _and_ its value acts as the parameter for the mesh fitting. If *0*, the convex-hull algorithm is used. It is suitable for convex bodies or if the intention is to enclose the `x`, `y` and `z` point set into a convex hull. + * @default -1 + */ + alphahull?: number; + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here `intensity`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Value should have the same units as `intensity` and if set, `cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as `intensity`. Has no effect when `cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as `intensity` and if set, `cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the color of the whole mesh */ + color?: Color; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + contour?: { + /** + * Sets the color of the contour lines. + * @default '#444' + */ + color?: Color; + /** + * Sets whether or not dynamic contours are shown on hover + * @default false + */ + show?: boolean; + /** + * Sets the width of the contour lines. + * @default 2 + * Range: [1, 16] + */ + width?: number; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the Delaunay axis, which is the axis that is perpendicular to the surface of the Delaunay triangulation. It has an effect if `i`, `j`, `k` are not provided and `alphahull` is set to indicate Delaunay triangulation. + * @default 'z' + */ + delaunayaxis?: 'x' | 'y' | 'z'; + /** Sets the color of each face Overrides *color* and *vertexcolor*. */ + facecolor?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections. + * @default false + */ + flatshading?: boolean; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *first* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `i[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `i` represents a point in space, which is the first vertex of a triangle. */ + i?: Datum[] | Datum[][] | TypedArray; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** Sets the intensity values for vertices or cells as defined by `intensitymode`. It can be used for plotting fields on meshes. */ + intensity?: Datum[] | Datum[][] | TypedArray; + /** + * Determines the source of `intensity` values. + * @default 'vertex' + */ + intensitymode?: 'vertex' | 'cell'; + /** A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `j[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `j` represents a point in space, which is the second vertex of a triangle. */ + j?: Datum[] | Datum[][] | TypedArray; + /** A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *third* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `k` represents a point in space, which is the third vertex of a triangle. */ + k?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + lighting?: _internal.Lighting; + lightposition?: { + /** + * Numeric vector, representing the X coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ + x?: number; + /** + * Numeric vector, representing the Y coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ + y?: number; + /** + * Numeric vector, representing the Z coordinate for each vertex. + * @default 0 + * Range: [-100000, 100000] + */ + z?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. + * @default 'scene' + */ + scene?: string; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + /** Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + type?: 'mesh3d'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the color of each vertex Overrides *color*. While Red, green and blue colors are in the range of 0 and 255; in the case of having vertex color data in RGBA format, the alpha color should be normalized to be between 0 and 1. */ + vertexcolor?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the X coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ + xcalendar?: Calendar; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the Y coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex. */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ + ycalendar?: Calendar; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the Z coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex. */ + z?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the calendar system to use with `z` date data. + * @default 'gregorian' + */ + zcalendar?: Calendar; + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + zhoverformat?: string; +} + +export interface OhlcData { + /** Sets the close values. */ + close?: Datum[] | Datum[][] | TypedArray; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + decreasing?: { + line?: { + /** + * Sets the line color. + * @default '#FF4136' + */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ + width?: number; + }; + }; + /** Sets the high values. */ + high?: Datum[] | Datum[][] | TypedArray; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: { + /** + * Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines + * @default 'auto' + */ + align?: 'left' | 'right' | 'auto' | ('left' | 'right' | 'auto')[]; + /** Sets the background color of the hover labels for this trace */ + bgcolor?: Color | Color[]; + /** Sets the border color of the hover labels for this trace. */ + bordercolor?: Color | Color[]; + /** Sets the font used in hover labels. */ + font?: FontArray; + /** + * Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. + * @default 15 + * Minimum: -1 + */ + namelength?: number | number[]; + /** + * Sets whether or not to show the hover label arrow/triangle pointing to the data point. + * @default true + */ + showarrow?: boolean; + /** + * Show hover information (open, close, high, low) in separate labels, rather than a single unified label. Default: *false*. When set to *true*, `hovertemplate` is ignored. + * @default false + */ + split?: boolean; + }; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `open`, `high`, `low` and `close`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + increasing?: { + line?: { + /** + * Sets the line color. + * @default '#3D9970' + */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ + width?: number; + }; + }; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). Note that this style setting can also be set per direction via `increasing.line.dash` and `decreasing.line.dash`. + * @default 'solid' + */ + dash?: Dash; + /** + * Sets the line width (in px). Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`. + * @default 2 + * Minimum: 0 + */ + width?: number; + }; + /** Sets the low values. */ + low?: Datum[] | Datum[][] | TypedArray; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the open values. */ + open?: Datum[] | Datum[][] | TypedArray; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** Sets hover text elements associated with each sample point. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to this trace's sample points. */ + text?: string | string[]; + /** + * Sets the width of the open/close tick marks relative to the *x* minimal interval. + * @default 0.3 + * Range: [0, 0.5] + */ + tickwidth?: number; + type?: 'ohlc'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the x coordinates. If absent, linear coordinate will be generated. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ + xcalendar?: Calendar; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ + zorder?: number; +} + +export interface ParcatsData { + /** + * Sets the drag interaction mode for categories and dimensions. If `perpendicular`, the categories can only move along a line perpendicular to the paths. If `freeform`, the categories can freely move on the plane. If `fixed`, the categories and dimensions are stationary. + * @default 'perpendicular' + */ + arrangement?: 'perpendicular' | 'freeform' | 'fixed'; + /** + * Sort paths so that like colors are bundled together within each category. + * @default true + */ + bundlecolors?: boolean; + /** + * The number of observations represented by each state. Defaults to 1 so that each state represents one observation + * @default 1 + * Minimum: 0 + */ + counts?: number | number[]; + dimensions?: Array<{ + /** Sets the order in which categories in this dimension appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | Datum[][] | TypedArray; + /** + * Specifies the ordering logic for the categories in the dimension. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. + * @default 'trace' + */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array'; + /** The display index of dimension, from left to right, zero indexed, defaults to dimension index. */ + displayindex?: number; + /** The shown name of the dimension. */ + label?: string; + /** Sets alternative tick labels for the categories in this dimension. Only has an effect if `categoryorder` is set to *array*. Should be an array the same length as `categoryarray` Used with `categoryorder`. */ + ticktext?: Datum[] | Datum[][] | TypedArray; + /** + * Dimension values. `values[n]` represents the category value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). + * @default [] + */ + values?: Datum[] | Datum[][] | TypedArray; + /** + * Shows the dimension when set to `true` (the default). Hides the dimension for `false`. + * @default true + */ + visible?: boolean; + }>; + domain?: Domain; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'count' | 'probability' | 'all' | 'none' | 'skip' | (string & {}); + /** + * Sets the hover interaction mode for the parcats diagram. If `category`, hover interaction take place per category. If `color`, hover interactions take place per color per category. If `dimension`, hover interactions take place across all categories per dimension. + * @default 'category' + */ + hoveron?: 'category' | 'color' | 'dimension'; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `count`, `probability`, `category`, `categorycount`, `colorcount` and `bandcolorcount`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets the font for the `dimension` labels. */ + labelfont?: Font; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `count` and `probability`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** + * Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Sets the shape of the paths. If `linear`, paths are composed of straight lines. If `hspline`, paths are composed of horizontal curved splines + * @default 'linear' + */ + shape?: 'linear' | 'hspline'; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array. + * @default false + */ + showscale?: boolean; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the path sorting algorithm. If `forward`, sort paths based on dimension categories from left to right. If `backward`, sort paths based on dimensions categories from right to left. + * @default 'forward' + */ + sortpaths?: 'forward' | 'backward'; + /** Sets the font for the `category` labels. */ + tickfont?: Font; + type?: 'parcats'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface ParcoordsData { + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + dimensions?: Array<{ + /** The domain range to which the filter on the dimension is constrained. Must be an array of `[fromValue, toValue]` with `fromValue <= toValue`, or if `multiselect` is not disabled, you may give an array of arrays, where each inner array is `[fromValue, toValue]`. */ + constraintrange?: any[]; + /** The shown name of the dimension. */ + label?: string; + /** + * Do we allow multiple selection ranges or just a single range? + * @default true + */ + multiselect?: boolean; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** The domain range that represents the full, shown axis extent. Defaults to the `values` extent. Must be an array of `[fromValue, toValue]` with finite numbers as elements. */ + range?: [number, number]; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + /** Sets the text displayed at the ticks position via `tickvals`. */ + ticktext?: Datum[] | Datum[][] | TypedArray; + /** Sets the values at which ticks on this axis appear. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + /** Dimension values. `values[n]` represents the value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). Each value must be a finite number. */ + values?: Datum[] | Datum[][] | TypedArray; + /** + * Shows the dimension when set to `true` (the default). Hides the dimension for `false`. + * @default true + */ + visible?: boolean; + }>; + domain?: Domain; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the angle of the labels with respect to the horizontal. For example, a `tickangle` of -90 draws the labels vertically. Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*. + * @default 0 + */ + labelangle?: number | 'auto'; + /** Sets the font for the `dimension` labels. */ + labelfont?: Font; + /** + * Specifies the location of the `label`. *top* positions labels above, next to the title *bottom* positions labels below the graph Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*. + * @default 'top' + */ + labelside?: 'top' | 'bottom'; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default false + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * @default [[0,"#440154"],[0.06274509803921569,"#48186a"],[0.12549019607843137,"#472d7b"],[0.18823529411764706,"#424086"],[0.25098039215686274,"#3b528b"],[0.3137254901960784,"#33638d"],[0.3764705882352941,"#2c728e"],[0.4392156862745098,"#26828e"],[0.5019607843137255,"#21918c"],[0.5647058823529412,"#1fa088"],[0.6274509803921569,"#28ae80"],[0.6901960784313725,"#3fbc73"],[0.7529411764705882,"#5ec962"],[0.8156862745098039,"#84d44b"],[0.8784313725490196,"#addc30"],[0.9411764705882353,"#d8e219"],[1,"#fde725"]] + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** + * Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array. + * @default false + */ + showscale?: boolean; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the font for the `dimension` range values. */ + rangefont?: Font; + /** Sets the font for the `dimension` tick values. */ + tickfont?: Font; + type?: 'parcoords'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + line?: { + /** + * Sets the base color of unselected lines. in connection with `unselected.line.opacity`. + * @default '#7f7f7f' + */ + color?: Color; + /** + * Sets the opacity of unselected lines. The default *auto* decreases the opacity smoothly as the number of lines increases. Use *1* to achieve exact `unselected.line.color`. + * @default 'auto' + * Range: [0, 1] + */ + opacity?: number; + }; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface PieData { + /** + * Determines whether outside text labels can push the margins. + * @default false + */ + automargin?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Specifies the direction at which succeeding sectors follow one another. + * @default 'counterclockwise' + */ + direction?: 'clockwise' | 'counterclockwise'; + /** + * Sets the label step. See `label0` for more info. + * @default 1 + */ + dlabel?: number; + domain?: Domain; + /** + * Sets the fraction of the radius to cut out of the pie. Use this to make a donut chart. + * @default 0 + * Range: [0, 1] + */ + hole?: number; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'label' | 'text' | 'value' | 'percent' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('label' | 'text' | 'value' | 'percent' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** Sets the font used for `textinfo` lying inside the sector. */ + insidetextfont?: FontArray; + /** + * Controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector. + * @default 'auto' + */ + insidetextorientation?: 'horizontal' | 'radial' | 'tangential' | 'auto'; + /** + * Alternate to `labels`. Builds a numeric set of labels. Use with `dlabel` where `label0` is the starting label and `dlabel` the step. + * @default 0 + */ + label0?: number; + /** Sets the sector labels. If `labels` entries are duplicated, we sum associated `values` or simply count occurrences if `values` is not provided. For other array attributes (including color) we use the first non-empty entry among all occurrences of the label. */ + labels?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show the pie slices in. Can be an array if `values` is set. In that case, each entry specifies the legend reference for one slice. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string | string[]; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this pie. If passed as an array, this will set the legend rank of the individual pie slices. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number | number[]; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + marker?: { + /** Sets the color of each sector. If not specified, the default trace color set is used to pick the sector colors. */ + colors?: Datum[] | Datum[][] | TypedArray; + line?: _internal.Line; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the font used for `textinfo` lying outside the sector. */ + outsidetextfont?: FontArray; + /** + * Sets the fraction of larger radius to pull the sectors out from the center. This can be a constant to pull all slices apart from each other equally or an array to highlight one or more slices. + * @default 0 + * Range: [0, 1] + */ + pull?: number | number[]; + /** + * Instead of the first slice starting at 12 o'clock, rotate to some other angle. + * @default 0 + */ + rotation?: number | 'auto'; + /** If there are multiple pie charts that should be sized according to their totals, link them by providing a non-empty group id here shared by every trace in the same group. */ + scalegroup?: string; + /** + * Determines whether or not items corresponding to the pie slices are shown in the legend. Can be an array if `values` is set. In that case, each entry specifies appearance in the legend for one slice. + * @default true + */ + showlegend?: boolean | boolean[]; + /** + * Determines whether or not the sectors are reordered from largest to smallest. + * @default true + */ + sort?: boolean; + /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: Datum[] | Datum[][] | TypedArray; + /** Sets the font used for `textinfo`. */ + textfont?: FontArray; + /** Determines which trace information appear on the graph. */ + textinfo?: 'label' | 'text' | 'value' | 'percent' | 'none' | (string & {}); + /** + * Specifies the location of the `textinfo`. + * @default 'auto' + */ + textposition?: 'inside' | 'outside' | 'auto' | 'none' | ('inside' | 'outside' | 'auto' | 'none')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + title?: { + /** Sets the font used for `title`. */ + font?: FontArray; + /** Specifies the location of the `title`. */ + position?: 'top left' | 'top center' | 'top right' | 'middle center' | 'bottom left' | 'bottom center' | 'bottom right'; + /** Sets the title of the chart. If it is empty, no title is displayed. */ + text?: string; + }; + type?: 'pie'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the values of the sectors. If omitted, we count occurrences of each label. */ + values?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface QuiverData { + /** + * Sets the arrows' anchor with respect to their (x,y) positions. Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head, or *center* to center the arrow on (x,y). + * @default 'tail' + */ + anchor?: 'tip' | 'tail' | 'center'; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + */ + dx?: number; + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + */ + dy?: number; + /** + * Maximum distance (in pixels) to look for nearby arrows on hover. + * @default 20 + * Minimum: -1 + */ + hoverdistance?: number; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'u' | 'v' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'u' | 'v' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + marker?: { + /** + * Sets the size of the arrow head relative to `marker.line.width`. A value of 1 (default) gives a head about 3x as wide as the line. + * @default 1 + * Minimum: 0.3 + */ + arrowsize?: number; + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + line?: { + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Sets the width (in px) of the arrow lines. + * @default 1 + * Minimum: 0 + */ + width?: number; + }; + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default true + */ + showscale?: boolean; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + line?: _internal.ErrorY; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths. + * @default 'scaled' + */ + sizemode?: 'scaled' | 'absolute' | 'raw'; + /** + * Adjusts the arrow size scaling. The arrow length is determined by the vector norm multiplied by `sizeref`, optionally normalized when `sizemode` is *scaled*. + * Minimum: 0 + */ + sizeref?: number; + /** Sets text elements associated with each (x,y) pair. */ + text?: Datum[] | Datum[][] | TypedArray; + /** Sets the text font. */ + textfont?: FontArray; + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; + type?: 'quiver'; + /** Sets the x components of the arrow vectors. */ + u?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + uhoverformat?: string; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + line?: _internal.ErrorY; + }; + textfont?: Font; + }; + /** Sets the y components of the arrow vectors. */ + v?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + vhoverformat?: string; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the x coordinates of the arrow locations. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + */ + x0?: any; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the y coordinates of the arrow locations. */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + */ + y0?: any; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; +} + +export interface SankeyData { + /** + * If value is `snap` (the default), the node arrangement is assisted by automatic snapping of elements to preserve space between nodes specified via `nodepad`. If value is `perpendicular`, the nodes can only move along a line perpendicular to the flow. If value is `freeform`, the nodes can freely move on the plane. If value is `fixed`, the nodes are stationary. + * @default 'snap' + */ + arrangement?: 'snap' | 'perpendicular' | 'freeform' | 'fixed'; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + domain?: Domain; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. Note that this attribute is superseded by `node.hoverinfo` and `node.hoverinfo` for nodes and links respectively. + * @default 'all' + */ + hoverinfo?: 'all' | 'none' | 'skip' | (string & {}); + hoverlabel?: HoverLabel; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + /** The links of the Sankey plot. */ + link?: { + /** + * Sets the length (in px) of the links arrow, if 0 no arrow will be drawn. + * @default 0 + * Minimum: 0 + */ + arrowlen?: number; + /** Sets the `link` color. It can be a single value, or an array for specifying color for each `link`. If `link.color` is omitted, then by default, a translucent grey link will be used. */ + color?: Color | Color[]; + colorscales?: Array<{ + /** + * Sets the upper bound of the color domain. + * @default 1 + */ + cmax?: number; + /** + * Sets the lower bound of the color domain. + * @default 0 + */ + cmin?: number; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * @default [[0,"white"],[1,"black"]] + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** The label of the links to color based on their concentration within a flow. */ + label?: string; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + }>; + /** Assigns extra data to each link. */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** Sets the `link` hover color. It can be a single value, or an array for specifying hover colors for each `link`. If `link.hovercolor` is omitted, then by default, links will become slightly more opaque when hovered over. */ + hovercolor?: Color | Color[]; + /** + * Determines which trace information appear when hovering links. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'all' | 'none' | 'skip'; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `value` and `label`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** + * The shown name of the link. + * @default [] + */ + label?: Datum[] | Datum[][] | TypedArray; + line?: _internal.Line; + /** + * An integer number `[0..nodes.length - 1]` that represents the source node. + * @default [] + */ + source?: Datum[] | Datum[][] | TypedArray; + /** + * An integer number `[0..nodes.length - 1]` that represents the target node. + * @default [] + */ + target?: Datum[] | Datum[][] | TypedArray; + /** + * A numeric value representing the flow volume value. + * @default [] + */ + value?: Datum[] | Datum[][] | TypedArray; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** The nodes of the Sankey plot. */ + node?: { + /** + * Sets the alignment method used to position the nodes along the horizontal axis. + * @default 'justify' + */ + align?: 'justify' | 'left' | 'right' | 'center'; + /** Sets the `node` color. It can be a single value, or an array for specifying color for each `node`. If `node.color` is omitted, then the default `Plotly` color palette will be cycled through to have a variety of colors. These defaults are not fully opaque, to allow some visibility of what is beneath the node. */ + color?: Color | Color[]; + /** Assigns extra data to each node. */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Groups of nodes. Each group is defined by an array with the indices of the nodes it contains. Multiple groups can be specified. + * @default [] + * Setting this also sets: x = [], y = [] + */ + groups?: number[]; + /** + * Determines which trace information appear when hovering nodes. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'all' | 'none' | 'skip'; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `value` and `label`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** + * The shown name of the node. + * @default [] + */ + label?: Datum[] | Datum[][] | TypedArray; + line?: _internal.Line; + /** + * Sets the padding (in px) between the `nodes`. + * @default 20 + * Minimum: 0 + */ + pad?: number; + /** + * Sets the thickness (in px) of the `nodes`. + * @default 20 + * Minimum: 1 + */ + thickness?: number; + /** + * The normalized horizontal position of the node. + * @default [] + */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * The normalized vertical position of the node. + * @default [] + */ + y?: Datum[] | Datum[][] | TypedArray; + }; + /** + * Sets the orientation of the Sankey diagram. + * @default 'h' + */ + orientation?: 'v' | 'h'; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Sets the font for node labels */ + textfont?: Font; + type?: 'sankey'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Sets the value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. + * @default '.3s' + */ + valueformat?: string; + /** Adds a unit to follow the value in the hover tooltip. Add a space if a separation is necessary from the value. */ + valuesuffix?: string; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface ScatterData { + /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ + alignmentgroup?: string; + /** + * Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default true + */ + cliponaxis?: boolean; + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + */ + dx?: number; + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + */ + dy?: number; + error_x?: { + /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ + array?: Datum[] | Datum[][] | TypedArray; + /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ + arrayminus?: Datum[] | Datum[][] | TypedArray; + /** Sets the stroke color of the error bars. */ + color?: Color; + copy_ystyle?: boolean; + /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ + symmetric?: boolean; + /** + * Sets the thickness (in px) of the error bars. + * @default 2 + * Minimum: 0 + */ + thickness?: number; + /** + * @default 0 + * Minimum: 0 + */ + traceref?: number; + /** + * @default 0 + * Minimum: 0 + */ + tracerefminus?: number; + /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ + type?: 'percent' | 'constant' | 'sqrt' | 'data'; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. + * @default 10 + * Minimum: 0 + */ + value?: number; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars + * @default 10 + * Minimum: 0 + */ + valueminus?: number; + /** Determines whether or not this set of error bars is visible. */ + visible?: boolean; + /** + * Sets the width (in px) of the cross-bar at both ends of the error bars. + * Minimum: 0 + */ + width?: number; + }; + error_y?: _internal.ErrorY; + /** Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order. */ + fill?: 'none' | 'tozeroy' | 'tozerox' | 'tonexty' | 'tonextx' | 'toself' | 'tonext'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. If fillgradient is specified, fillcolor is ignored except for setting the background color of the hover label, if any. */ + fillcolor?: Color; + /** Sets a fill gradient. If not specified, the fillcolor is used instead. */ + fillgradient?: { + /** Sets the fill gradient colors as a color scale. The color scale is interpreted as a gradient applied in the direction specified by *orientation*, from the lowest to the highest value of the scatter plot along that axis, or from the center to the most distant point from it, if orientation is *radial*. */ + colorscale?: ColorScale; + /** Sets the gradient start value. It is given as the absolute position on the axis determined by the orientiation. E.g., if orientation is *horizontal*, the gradient will be horizontal and start from the x-position given by start. If omitted, the gradient starts at the lowest value of the trace along the respective axis. Ignored if orientation is *radial*. */ + start?: number; + /** Sets the gradient end value. It is given as the absolute position on the axis determined by the orientiation. E.g., if orientation is *horizontal*, the gradient will be horizontal and end at the x-position given by end. If omitted, the gradient ends at the highest value of the trace along the respective axis. Ignored if orientation is *radial*. */ + stop?: number; + /** + * Sets the type/orientation of the color gradient for the fill. Defaults to *none*. + * @default 'none' + */ + type?: 'radial' | 'horizontal' | 'vertical' | 'none'; + }; + /** Sets the pattern within the marker. */ + fillpattern?: Pattern; + /** Only relevant when `stackgroup` is used, and only the first `groupnorm` found in the `stackgroup` will be used - including if `visible` is *legendonly* but not if it is `false`. Sets the normalization for the sum of this `stackgroup`. With *fraction*, the value of each trace at each location is divided by the sum of all trace values at that location. *percent* is the same but multiplied by 100 to show percentages. If there are multiple subplots, or multiple `stackgroup`s on one subplot, each will be normalized within its own set. */ + groupnorm?: '' | 'fraction' | 'percent'; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*. */ + hoveron?: 'points' | 'fills' | (string & {}); + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** + * Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. + * @default 'auto' + * Minimum: 0 + */ + backoff?: number | number[]; + /** Sets the line color. */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. + * @default 'linear' + */ + shape?: 'linear' | 'spline' | 'hv' | 'vh' | 'hvh' | 'vhv'; + /** + * Simplifies lines by removing nearly-collinear points. When transitioning lines, it may be desirable to disable this so that the number of points along the resulting SVG path is unaffected. + * @default true + */ + simplify?: boolean; + /** + * Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). + * @default 1 + * Range: [0, 1.3] + */ + smoothing?: number; + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ + width?: number; + }; + marker?: _internal.Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ + offsetgroup?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Only relevant in the following cases: 1. when `scattermode` is set to *group*. 2. when `stackgroup` is used, and only the first `orientation` found in the `stackgroup` will be used - including if `visible` is *legendonly* but not if it is `false`. Sets the stacking direction. With *v* (*h*), the y (x) values of subsequent traces are added. Also affects the default value of `fill`. */ + orientation?: 'v' | 'h'; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * Only relevant when `stackgroup` is used, and only the first `stackgaps` found in the `stackgroup` will be used - including if `visible` is *legendonly* but not if it is `false`. Determines how we handle locations at which other traces in this group have data but this one does not. With *infer zero* we insert a zero at these locations. With *interpolate* we linearly interpolate between existing values, and extrapolate a constant beyond the existing values. + * @default 'infer zero' + */ + stackgaps?: 'infer zero' | 'interpolate'; + /** Set several scatter traces (on the same subplot) to the same stackgroup in order to add their y values (or their x values if `orientation` is *h*). If blank or omitted this trace will not be stacked. Stacking also turns `fill` on by default, using *tonexty* (*tonextx*) if `orientation` is *h* (*v*) and sets the default `mode` to *lines* irrespective of point count. You can only stack on a numeric (linear or log) axis. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order. */ + stackgroup?: string; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: FontArray; + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + type?: 'scatter'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the x coordinates. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + */ + x0?: any; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ + xcalendar?: Calendar; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the y coordinates. */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + */ + y0?: any; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ + ycalendar?: Calendar; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ + yperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + yperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + */ + yperiodalignment?: 'start' | 'middle' | 'end'; + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ + zorder?: number; +} + +export interface Scatter3dData { + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + error_x?: { + /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ + array?: Datum[] | Datum[][] | TypedArray; + /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ + arrayminus?: Datum[] | Datum[][] | TypedArray; + /** Sets the stroke color of the error bars. */ + color?: Color; + copy_zstyle?: boolean; + /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ + symmetric?: boolean; + /** + * Sets the thickness (in px) of the error bars. + * @default 2 + * Minimum: 0 + */ + thickness?: number; + /** + * @default 0 + * Minimum: 0 + */ + traceref?: number; + /** + * @default 0 + * Minimum: 0 + */ + tracerefminus?: number; + /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ + type?: 'percent' | 'constant' | 'sqrt' | 'data'; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. + * @default 10 + * Minimum: 0 + */ + value?: number; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars + * @default 10 + * Minimum: 0 + */ + valueminus?: number; + /** Determines whether or not this set of error bars is visible. */ + visible?: boolean; + /** + * Sets the width (in px) of the cross-bar at both ends of the error bars. + * Minimum: 0 + */ + width?: number; + }; + error_y?: { + /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ + array?: Datum[] | Datum[][] | TypedArray; + /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ + arrayminus?: Datum[] | Datum[][] | TypedArray; + /** Sets the stroke color of the error bars. */ + color?: Color; + copy_zstyle?: boolean; + /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ + symmetric?: boolean; + /** + * Sets the thickness (in px) of the error bars. + * @default 2 + * Minimum: 0 + */ + thickness?: number; + /** + * @default 0 + * Minimum: 0 + */ + traceref?: number; + /** + * @default 0 + * Minimum: 0 + */ + tracerefminus?: number; + /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ + type?: 'percent' | 'constant' | 'sqrt' | 'data'; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. + * @default 10 + * Minimum: 0 + */ + value?: number; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars + * @default 10 + * Minimum: 0 + */ + valueminus?: number; + /** Determines whether or not this set of error bars is visible. */ + visible?: boolean; + /** + * Sets the width (in px) of the cross-bar at both ends of the error bars. + * Minimum: 0 + */ + width?: number; + }; + error_z?: _internal.ErrorY; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets text elements associated with each (x,y,z) triplet. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y,z) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** + * Sets the dash style of the lines. + * @default 'solid' + */ + dash?: Dash; + /** + * Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array. + * @default false + */ + showscale?: boolean; + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ + width?: number; + }; + marker?: { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + line?: { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + /** + * Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** + * Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Sets the width (in px) of the lines bounding the marker points. + * Minimum: 0 + */ + width?: number; + }; + /** + * Sets the marker opacity. Note that the marker opacity for scatter3d traces must be a scalar value for performance reasons. To set a blending opacity value (i.e. which is not transparent), set *marker.color* to an rgba color and use its alpha channel. + * Range: [0, 1] + */ + opacity?: number; + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ + showscale?: boolean; + /** + * Sets the marker size (in px). + * @default 8 + * Minimum: 0 + */ + size?: number | number[]; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. + * @default 0 + * Minimum: 0 + */ + sizemin?: number; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. + * @default 'diameter' + */ + sizemode?: 'diameter' | 'area'; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. + * @default 1 + */ + sizeref?: number; + /** + * Sets the marker symbol type. + * @default 'circle' + */ + symbol?: MarkerSymbol; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** + * Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. + * @default 'lines+markers' + */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + projection?: { + x?: { + /** + * Sets the projection color. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the scale factor determining the size of the projection marker points. + * @default 0.6666666666666666 + * Range: [0, 10] + */ + scale?: number; + /** + * Sets whether or not projections are shown along the x axis. + * @default false + */ + show?: boolean; + }; + y?: { + /** + * Sets the projection color. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the scale factor determining the size of the projection marker points. + * @default 0.6666666666666666 + * Range: [0, 10] + */ + scale?: number; + /** + * Sets whether or not projections are shown along the y axis. + * @default false + */ + show?: boolean; + }; + z?: { + /** + * Sets the projection color. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the scale factor determining the size of the projection marker points. + * @default 0.6666666666666666 + * Range: [0, 10] + */ + scale?: number; + /** + * Sets whether or not projections are shown along the z axis. + * @default false + */ + show?: boolean; + }; + }; + /** + * Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. + * @default 'scene' + */ + scene?: string; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * If *-1*, the scatter points are not fill with a surface If *0*, *1*, *2*, the scatter points are filled with a Delaunay surface about the x, y, z respectively. + * @default -1 + */ + surfaceaxis?: -1 | 0 | 1 | 2; + /** Sets the surface fill color. */ + surfacecolor?: Color; + /** Sets text elements associated with each (x,y,z) triplet. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y,z) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: { + color?: Color | Color[]; + /** HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available. */ + family?: string | string[]; + /** + * Minimum: 1 + */ + size?: number | number[]; + /** + * Sets whether a font should be styled with a normal or italic face from its family. + * @default 'normal' + */ + style?: 'normal' | 'italic' | ('normal' | 'italic')[]; + /** + * Sets the variant of the font. + * @default 'normal' + */ + variant?: 'normal' | 'small-caps' | ('normal' | 'small-caps')[]; + /** + * Sets the weight (or boldness) of the font. + * @default 'normal' + * Range: [1, 1000] + */ + weight?: number | 'normal' | 'bold' | (number | 'normal' | 'bold')[]; + }; + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'top center' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + type?: 'scatter3d'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the x coordinates. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ + xcalendar?: Calendar; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the y coordinates. */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ + ycalendar?: Calendar; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the z coordinates. */ + z?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the calendar system to use with `z` date data. + * @default 'gregorian' + */ + zcalendar?: Calendar; + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + zhoverformat?: string; +} + +export interface ScattercarpetData { + /** Sets the a-axis coordinates. */ + a?: Datum[] | Datum[][] | TypedArray; + /** Sets the b-axis coordinates. */ + b?: Datum[] | Datum[][] | TypedArray; + /** An identifier for this carpet, so that `scattercarpet` and `contourcarpet` traces can specify a carpet plot on which they lie */ + carpet?: string; + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. + * @default 'none' + */ + fill?: 'none' | 'toself' | 'tonext'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'a' | 'b' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('a' | 'b' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*. */ + hoveron?: 'points' | 'fills' | (string & {}); + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b). To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** + * Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. + * @default 'auto' + * Minimum: 0 + */ + backoff?: number | number[]; + /** Sets the line color. */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. + * @default 'linear' + */ + shape?: 'linear' | 'spline'; + /** + * Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). + * @default 1 + * Range: [0, 1.3] + */ + smoothing?: number; + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ + width?: number; + }; + marker?: _internal.Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** + * Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. + * @default 'markers' + */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** Sets text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: FontArray; + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b` and `text`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + type?: 'scattercarpet'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ + zorder?: number; +} + +export interface ScattergeoData { + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Only has an effect when `geojson` is set. Support nested property, for example *properties.name*. + * @default 'id' + */ + featureidkey?: string; + /** + * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. + * @default 'none' + */ + fill?: 'none' | 'toself'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** + * Sets a reference between this trace's geospatial coordinates and a geographic map. If *geo* (the default value), the geospatial coordinates refer to `layout.geo`. If *geo2*, the geospatial coordinates refer to `layout.geo2`, and so on. + * @default 'geo' + */ + geo?: string; + /** Sets optional GeoJSON data associated with this trace. If not given, the features on the base map are used when `locations` is set. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*. */ + geojson?: any; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'lon' | 'lat' | 'location' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('lon' | 'lat' | 'location' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (lon,lat) pair or item in `locations`. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) or `locations` coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** Sets the latitude coordinates (in degrees North). */ + lat?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** Sets the line color. */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ + width?: number; + }; + /** + * Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*). + * @default 'ISO-3' + */ + locationmode?: 'ISO-3' | 'USA-states' | 'country names' | 'geojson-id'; + /** Sets the coordinates via location IDs or names. Coordinates correspond to the centroid of each location given. See `locationmode` for more info. */ + locations?: Datum[] | Datum[][] | TypedArray; + /** Sets the longitude coordinates (in degrees East). */ + lon?: Datum[] | Datum[][] | TypedArray; + marker?: { + /** + * Sets the marker angle in respect to `angleref`. + * @default 0 + */ + angle?: number | 'auto' | (number | 'auto')[]; + /** + * Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen. With *north*, angle 0 points north based on the current map projection. + * @default 'up' + */ + angleref?: 'previous' | 'up' | 'north'; + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + gradient?: { + /** Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical. */ + color?: Color | Color[]; + /** + * Sets the type of gradient used to fill the markers + * @default 'none' + */ + type?: 'radial' | 'horizontal' | 'vertical' | 'none' | ('radial' | 'horizontal' | 'vertical' | 'none')[]; + }; + line?: _internal.Line; + /** + * Sets the marker opacity. + * Range: [0, 1] + */ + opacity?: number | number[]; + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ + showscale?: boolean; + /** + * Sets the marker size (in px). + * @default 6 + * Minimum: 0 + */ + size?: number | number[]; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. + * @default 0 + * Minimum: 0 + */ + sizemin?: number; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. + * @default 'diameter' + */ + sizemode?: 'diameter' | 'area'; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. + * @default 1 + */ + sizeref?: number; + /** + * Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it. + * @default 0 + * Minimum: 0 + */ + standoff?: number | number[]; + /** + * Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. + * @default 'circle' + */ + symbol?: MarkerSymbol; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** + * Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. + * @default 'markers' + */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** Sets text elements associated with each (lon,lat) pair or item in `locations`. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) or `locations` coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: FontArray; + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon`, `location` and `text`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + type?: 'scattergeo'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface ScatterglData { + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + */ + dx?: number; + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + */ + dy?: number; + error_x?: { + /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ + array?: Datum[] | Datum[][] | TypedArray; + /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ + arrayminus?: Datum[] | Datum[][] | TypedArray; + /** Sets the stroke color of the error bars. */ + color?: Color; + copy_ystyle?: boolean; + /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ + symmetric?: boolean; + /** + * Sets the thickness (in px) of the error bars. + * @default 2 + * Minimum: 0 + */ + thickness?: number; + /** + * @default 0 + * Minimum: 0 + */ + traceref?: number; + /** + * @default 0 + * Minimum: 0 + */ + tracerefminus?: number; + /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ + type?: 'percent' | 'constant' | 'sqrt' | 'data'; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. + * @default 10 + * Minimum: 0 + */ + value?: number; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars + * @default 10 + * Minimum: 0 + */ + valueminus?: number; + /** Determines whether or not this set of error bars is visible. */ + visible?: boolean; + /** + * Sets the width (in px) of the cross-bar at both ends of the error bars. + * Minimum: 0 + */ + width?: number; + }; + error_y?: _internal.ErrorY; + /** + * Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order. + * @default 'none' + */ + fill?: 'none' | 'tozeroy' | 'tozerox' | 'tonexty' | 'tonextx' | 'toself' | 'tonext'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** Sets the line color. */ + color?: Color; + /** + * Sets the style of the lines. + * @default 'solid' + */ + dash?: Dash; + /** + * Determines the line shape. The values correspond to step-wise line shapes. + * @default 'linear' + */ + shape?: 'linear' | 'hv' | 'vh' | 'hvh' | 'vhv'; + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ + width?: number; + }; + marker?: _internal.Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: { + color?: Color | Color[]; + /** HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available. */ + family?: string | string[]; + /** + * Minimum: 1 + */ + size?: number | number[]; + /** + * Sets whether a font should be styled with a normal or italic face from its family. + * @default 'normal' + */ + style?: 'normal' | 'italic' | ('normal' | 'italic')[]; + /** + * Sets the variant of the font. + * @default 'normal' + */ + variant?: 'normal' | 'small-caps' | ('normal' | 'small-caps')[]; + /** + * Sets the weight (or boldness) of the font. + * @default 'normal' + */ + weight?: 'normal' | 'bold' | ('normal' | 'bold')[]; + }; + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + type?: 'scattergl'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the x coordinates. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + */ + x0?: any; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ + xcalendar?: Calendar; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the y coordinates. */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + */ + y0?: any; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ + ycalendar?: Calendar; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ + yperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + yperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + */ + yperiodalignment?: 'start' | 'middle' | 'end'; +} + +export interface ScattermapData { + /** Determines if this scattermap trace's layers are to be inserted before the layer with the specified ID. By default, scattermap layers are inserted above all the base layers. To place the scattermap layers above every other layer, set `below` to *''*. */ + below?: string; + cluster?: { + /** Sets the color for each cluster step. */ + color?: Color | Color[]; + /** Determines whether clustering is enabled or disabled. */ + enabled?: boolean; + /** + * Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered. + * @default 24 + * Range: [0, 24] + */ + maxzoom?: number; + /** + * Sets the marker opacity. + * @default 1 + * Range: [0, 1] + */ + opacity?: number | number[]; + /** + * Sets the size for each cluster step. + * @default 20 + * Minimum: 0 + */ + size?: number | number[]; + /** + * Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value. + * @default -1 + * Minimum: -1 + */ + step?: number | number[]; + }; + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. + * @default 'none' + */ + fill?: 'none' | 'toself'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'lon' | 'lat' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('lon' | 'lat' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** Sets the latitude coordinates (in degrees North). */ + lat?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: _internal.ErrorY; + /** Sets the longitude coordinates (in degrees East). */ + lon?: Datum[] | Datum[][] | TypedArray; + marker?: { + /** + * Flag to draw all symbols, even if they overlap. + * @default false + */ + allowoverlap?: boolean; + /** + * Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle. + * @default 'auto' + */ + angle?: number | number[]; + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** + * Sets the marker opacity. + * Range: [0, 1] + */ + opacity?: number | number[]; + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ + showscale?: boolean; + /** + * Sets the marker size (in px). + * @default 6 + * Minimum: 0 + */ + size?: number | number[]; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. + * @default 0 + * Minimum: 0 + */ + sizemin?: number; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. + * @default 'diameter' + */ + sizemode?: 'diameter' | 'area'; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. + * @default 1 + */ + sizeref?: number; + /** + * Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols. + * @default 'circle' + */ + symbol?: MarkerSymbol; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** + * Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. + * @default 'markers' + */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ + size?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on. + * @default 'map' + */ + subplot?: string; + /** Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the icon text font (color=map.layer.paint.text-color, size=map.layer.layout.text-size). Has an effect only when `type` is set to *symbol*. */ + textfont?: Font; + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + type?: 'scattermap'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ + size?: number; + }; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface ScattermapboxData { + /** Determines if this scattermapbox trace's layers are to be inserted before the layer with the specified ID. By default, scattermapbox layers are inserted above all the base layers. To place the scattermapbox layers above every other layer, set `below` to *''*. */ + below?: string; + cluster?: { + /** Sets the color for each cluster step. */ + color?: Color | Color[]; + /** Determines whether clustering is enabled or disabled. */ + enabled?: boolean; + /** + * Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered. + * @default 24 + * Range: [0, 24] + */ + maxzoom?: number; + /** + * Sets the marker opacity. + * @default 1 + * Range: [0, 1] + */ + opacity?: number | number[]; + /** + * Sets the size for each cluster step. + * @default 20 + * Minimum: 0 + */ + size?: number | number[]; + /** + * Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value. + * @default -1 + * Minimum: -1 + */ + step?: number | number[]; + }; + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. + * @default 'none' + */ + fill?: 'none' | 'toself'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'lon' | 'lat' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('lon' | 'lat' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** Sets the latitude coordinates (in degrees North). */ + lat?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: _internal.ErrorY; + /** Sets the longitude coordinates (in degrees East). */ + lon?: Datum[] | Datum[][] | TypedArray; + marker?: { + /** + * Flag to draw all symbols, even if they overlap. + * @default false + */ + allowoverlap?: boolean; + /** + * Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle. + * @default 'auto' + */ + angle?: number | number[]; + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** + * Sets the marker opacity. + * Range: [0, 1] + */ + opacity?: number | number[]; + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ + showscale?: boolean; + /** + * Sets the marker size (in px). + * @default 6 + * Minimum: 0 + */ + size?: number | number[]; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. + * @default 0 + * Minimum: 0 + */ + sizemin?: number; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. + * @default 'diameter' + */ + sizemode?: 'diameter' | 'area'; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. + * @default 1 + */ + sizeref?: number; + /** + * Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols. + * @default 'circle' + */ + symbol?: MarkerSymbol; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** + * Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. + * @default 'markers' + */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ + size?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on. + * @default 'mapbox' + */ + subplot?: string; + /** Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the icon text font (color=mapbox.layer.paint.text-color, size=mapbox.layer.layout.text-size). Has an effect only when `type` is set to *symbol*. */ + textfont?: Font; + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + type?: 'scattermapbox'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ + size?: number; + }; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface ScatterpolarData { + /** + * Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default false + */ + cliponaxis?: boolean; + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the r coordinate step. + * @default 1 + */ + dr?: number; + /** Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates. */ + dtheta?: number; + /** + * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterpolar has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. + * @default 'none' + */ + fill?: 'none' | 'toself' | 'tonext'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*. */ + hoveron?: 'points' | 'fills' | (string & {}); + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** + * Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. + * @default 'auto' + * Minimum: 0 + */ + backoff?: number | number[]; + /** Sets the line color. */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. + * @default 'linear' + */ + shape?: 'linear' | 'spline'; + /** + * Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). + * @default 1 + * Range: [0, 1.3] + */ + smoothing?: number; + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ + width?: number; + }; + marker?: _internal.Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the radial coordinates */ + r?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step. + * @default 0 + */ + r0?: any; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on. + * @default 'polar' + */ + subplot?: string; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: FontArray; + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + /** Sets the angular coordinates */ + theta?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step. + * @default 0 + */ + theta0?: any; + /** + * Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes. + * @default 'degrees' + */ + thetaunit?: 'radians' | 'degrees' | 'gradians'; + type?: 'scatterpolar'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface ScatterpolarglData { + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the r coordinate step. + * @default 1 + */ + dr?: number; + /** Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates. */ + dtheta?: number; + /** + * Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order. + * @default 'none' + */ + fill?: 'none' | 'tozeroy' | 'tozerox' | 'tonexty' | 'tonextx' | 'toself' | 'tonext'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** Sets the line color. */ + color?: Color; + /** + * Sets the style of the lines. + * @default 'solid' + */ + dash?: Dash; + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ + width?: number; + }; + marker?: _internal.Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the radial coordinates */ + r?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step. + * @default 0 + */ + r0?: any; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on. + * @default 'polar' + */ + subplot?: string; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: { + color?: Color | Color[]; + /** HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available. */ + family?: string | string[]; + /** + * Minimum: 1 + */ + size?: number | number[]; + /** + * Sets whether a font should be styled with a normal or italic face from its family. + * @default 'normal' + */ + style?: 'normal' | 'italic' | ('normal' | 'italic')[]; + /** + * Sets the variant of the font. + * @default 'normal' + */ + variant?: 'normal' | 'small-caps' | ('normal' | 'small-caps')[]; + /** + * Sets the weight (or boldness) of the font. + * @default 'normal' + */ + weight?: 'normal' | 'bold' | ('normal' | 'bold')[]; + }; + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + /** Sets the angular coordinates */ + theta?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step. + * @default 0 + */ + theta0?: any; + /** + * Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes. + * @default 'degrees' + */ + thetaunit?: 'radians' | 'degrees' | 'gradians'; + type?: 'scatterpolargl'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface ScattersmithData { + /** + * Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default false + */ + cliponaxis?: boolean; + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scattersmith has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. + * @default 'none' + */ + fill?: 'none' | 'toself' | 'tonext'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'real' | 'imag' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('real' | 'imag' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*. */ + hoveron?: 'points' | 'fills' | (string & {}); + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** Sets the imaginary component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart. */ + imag?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** + * Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. + * @default 'auto' + * Minimum: 0 + */ + backoff?: number | number[]; + /** Sets the line color. */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. + * @default 'linear' + */ + shape?: 'linear' | 'spline'; + /** + * Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). + * @default 1 + * Range: [0, 1.3] + */ + smoothing?: number; + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ + width?: number; + }; + marker?: _internal.Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the real component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart. */ + real?: Datum[] | Datum[][] | TypedArray; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * Sets a reference between this trace's data coordinates and a smith subplot. If *smith* (the default value), the data refer to `layout.smith`. If *smith2*, the data refer to `layout.smith2`, and so on. + * @default 'smith' + */ + subplot?: string; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: FontArray; + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `real`, `imag` and `text`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + type?: 'scattersmith'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface ScatterternaryData { + /** Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`. */ + a?: Datum[] | Datum[][] | TypedArray; + /** Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`. */ + b?: Datum[] | Datum[][] | TypedArray; + /** Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`. */ + c?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default true + */ + cliponaxis?: boolean; + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. + * @default 'none' + */ + fill?: 'none' | 'toself' | 'tonext'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'a' | 'b' | 'c' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('a' | 'b' | 'c' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*. */ + hoveron?: 'points' | 'fills' | (string & {}); + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** + * Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. + * @default 'auto' + * Minimum: 0 + */ + backoff?: number | number[]; + /** Sets the line color. */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. + * @default 'linear' + */ + shape?: 'linear' | 'spline'; + /** + * Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). + * @default 1 + * Range: [0, 1.3] + */ + smoothing?: number; + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ + width?: number; + }; + marker?: _internal.Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** + * Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. + * @default 'markers' + */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * Sets a reference between this trace's data coordinates and a ternary subplot. If *ternary* (the default value), the data refer to `layout.ternary`. If *ternary2*, the data refer to `layout.ternary2`, and so on. + * @default 'ternary' + */ + subplot?: string; + /** + * The number each triplet should sum to, if only two of `a`, `b`, and `c` are provided. This overrides `ternary.sum` to normalize this specific trace, but does not affect the values displayed on the axes. 0 (or missing) means to use ternary.sum + * @default 0 + * Minimum: 0 + */ + sum?: number; + /** Sets text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b,c). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: FontArray; + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b`, `c` and `text`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + type?: 'scatterternary'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ + size?: number; + }; + textfont?: Font; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface SplomData { + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + diagonal?: { + /** + * Determines whether or not subplots on the diagonal are displayed. + * @default true + */ + visible?: boolean; + }; + dimensions?: Array<{ + axis?: { + /** + * Determines whether or not the x & y axes generated by this dimension match. Equivalent to setting the `matches` axis attribute in the layout with the correct axis id. + * @default true + */ + matches?: boolean; + /** Sets the axis type for this dimension's generated x and y axes. Note that the axis `type` values set in layout take precedence over this attribute. */ + type?: 'linear' | 'log' | 'date' | 'category'; + }; + /** Sets the label corresponding to this splom dimension. */ + label?: string; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Sets the dimension values to be plotted. */ + values?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not this dimension is shown on the graph. Note that even visible false dimension contribute to the default grid generate by this splom trace. + * @default true + */ + visible?: boolean; + }>; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + marker?: _internal.Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ + size?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * Determines whether or not subplots on the lower half from the diagonal are displayed. + * @default true + */ + showlowerhalf?: boolean; + /** + * Determines whether or not subplots on the upper half from the diagonal are displayed. + * @default true + */ + showupperhalf?: boolean; + /** Sets text elements associated with each (x,y) pair to appear on hover. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. */ + text?: string | string[]; + type?: 'splom'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ + size?: number; + }; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the list of x axes corresponding to dimensions of this splom trace. By default, a splom will match the first N xaxes where N is the number of input dimensions. Note that, in case where `diagonal.visible` is false and `showupperhalf` or `showlowerhalf` is false, this splom trace will generate one less x-axis and one less y-axis. */ + xaxes?: string[]; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the list of y axes corresponding to dimensions of this splom trace. By default, a splom will match the first N yaxes where N is the number of input dimensions. Note that, in case where `diagonal.visible` is false and `showupperhalf` or `showlowerhalf` is false, this splom trace will generate one less x-axis and one less y-axis. */ + yaxes?: string[]; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; +} + +export interface StreamtubeData { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here u/v/w norm) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as u/v/w norm. Has no effect when `cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'x+y+z+norm+text+name' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'u' | 'v' | 'w' | 'norm' | 'divergence' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'u' | 'v' | 'w' | 'norm' | 'divergence' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `tubex`, `tubey`, `tubez`, `tubeu`, `tubev`, `tubew`, `norm` and `divergence`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + lighting?: _internal.Lighting; + lightposition?: { + /** + * Numeric vector, representing the X coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ + x?: number; + /** + * Numeric vector, representing the Y coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ + y?: number; + /** + * Numeric vector, representing the Z coordinate for each vertex. + * @default 0 + * Range: [-100000, 100000] + */ + z?: number; + }; + /** + * The maximum number of displayed segments in a streamtube. + * @default 1000 + * Minimum: 0 + */ + maxdisplayed?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. + * @default 'scene' + */ + scene?: string; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + /** + * The scaling factor for the streamtubes. The default is 1, which avoids two max divergence tubes from touching at adjacent starting positions. + * @default 1 + * Minimum: 0 + */ + sizeref?: number; + starts?: { + /** Sets the x components of the starting position of the streamtubes */ + x?: Datum[] | Datum[][] | TypedArray; + /** Sets the y components of the starting position of the streamtubes */ + y?: Datum[] | Datum[][] | TypedArray; + /** Sets the z components of the starting position of the streamtubes */ + z?: Datum[] | Datum[][] | TypedArray; + }; + /** Sets a text element associated with this trace. If trace `hoverinfo` contains a *text* flag, this text element will be seen in all hover labels. Note that streamtube traces do not support array `text` values. */ + text?: string; + type?: 'streamtube'; + /** Sets the x components of the vector field. */ + u?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + uhoverformat?: string; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the y components of the vector field. */ + v?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + vhoverformat?: string; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the z components of the vector field. */ + w?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + whoverformat?: string; + /** Sets the x coordinates of the vector field. */ + x?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the y coordinates of the vector field. */ + y?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the z coordinates of the vector field. */ + z?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + zhoverformat?: string; +} + +export interface SunburstData { + /** + * Determines how the items in `values` are summed. When set to *total*, items in `values` are taken to be value of all its descendants. When set to *remainder*, items in `values` corresponding to the root and the branches sectors are taken to be the extra part not part of the sum of the values at their leaves. + * @default 'remainder' + */ + branchvalues?: 'remainder' | 'total'; + /** + * Determines default for `values` when it is not provided, by inferring a 1 for each of the *leaves* and/or *branches*, otherwise 0. + * @default 'leaves' + */ + count?: 'branches' | 'leaves' | (string & {}); + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + domain?: Domain; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'label+text+value+name' + */ + hoverinfo?: 'label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}) | ('label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry` and `percentParent`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** Sets the font used for `textinfo` lying inside the sector. */ + insidetextfont?: FontArray; + /** + * Controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector. + * @default 'auto' + */ + insidetextorientation?: 'horizontal' | 'radial' | 'tangential' | 'auto'; + /** Sets the labels of each of the sectors. */ + labels?: Datum[] | Datum[][] | TypedArray; + leaf?: { + /** + * Sets the opacity of the leaves. With colorscale it is defaulted to 1; otherwise it is defaulted to 0.7 + * Range: [0, 1] + */ + opacity?: number; + }; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + /** Sets the level from which this trace hierarchy is rendered. Set `level` to `''` to start from the root node in the hierarchy. Must be an "id" if `ids` is filled in, otherwise plotly attempts to find a matching item in `labels`. */ + level?: any; + marker?: { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if colors is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here colors) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if colors is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if colors is set to a numerical array. Value should have the same units as colors. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors. */ + colors?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + line?: _internal.Line; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + /** + * Reverses the color mapping if true. Has an effect only if colors is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if colors is set to a numerical array. + * @default false + */ + showscale?: boolean; + }; + /** + * Sets the number of rendered sectors from any given `level`. Set `maxdepth` to *-1* to render all the levels in the hierarchy. + * @default -1 + */ + maxdepth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented at the center of a sunburst graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used. */ + outsidetextfont?: FontArray; + /** Sets the parent sectors for each of the sectors. Empty string items '' are understood to reference the root node in the hierarchy. If `ids` is filled, `parents` items are understood to be "ids" themselves. When `ids` is not set, plotly attempts to find matching items in `labels`, but beware they must be unique. */ + parents?: Datum[] | Datum[][] | TypedArray; + root?: Font; + /** + * Rotates the whole diagram counterclockwise by some angle. By default the first slice starts at 3 o'clock. + * @default 0 + */ + rotation?: number | 'auto'; + /** + * Determines whether or not the sectors are reordered from largest to smallest. + * @default true + */ + sort?: boolean; + /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: Datum[] | Datum[][] | TypedArray; + /** Sets the font used for `textinfo`. */ + textfont?: FontArray; + /** Determines which trace information appear on the graph. */ + textinfo?: 'label' | 'text' | 'value' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'none' | (string & {}); + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + type?: 'sunburst'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the values associated with each of the sectors. Use with `branchvalues` to determine how the values are summed. */ + values?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface SurfaceData { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default false + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here z or surfacecolor) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Value should have the same units as z or surfacecolor and if set, `cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as z or surfacecolor. Has no effect when `cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as z or surfacecolor and if set, `cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data are filled in. + * @default false + */ + connectgaps?: boolean; + contours?: { + x?: { + /** + * Sets the color of the contour lines. + * @default '#444' + */ + color?: Color; + /** Sets the end contour level value. Must be more than `contours.start` */ + end?: number; + /** + * Determines whether or not contour lines about the x dimension are highlighted on hover. + * @default true + */ + highlight?: boolean; + /** + * Sets the color of the highlighted contour lines. + * @default '#444' + */ + highlightcolor?: Color; + /** + * Sets the width of the highlighted contour lines. + * @default 2 + * Range: [1, 16] + */ + highlightwidth?: number; + project?: { + /** + * Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ + x?: boolean; + /** + * Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ + y?: boolean; + /** + * Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ + z?: boolean; + }; + /** + * Determines whether or not contour lines about the x dimension are drawn. + * @default false + */ + show?: boolean; + /** + * Sets the step between each contour level. Must be positive. + * Minimum: 0 + */ + size?: number; + /** Sets the starting contour level value. Must be less than `contours.end` */ + start?: number; + /** + * An alternate to *color*. Determines whether or not the contour lines are colored using the trace *colorscale*. + * @default false + */ + usecolormap?: boolean; + /** + * Sets the width of the contour lines. + * @default 2 + * Range: [1, 16] + */ + width?: number; + }; + y?: { + /** + * Sets the color of the contour lines. + * @default '#444' + */ + color?: Color; + /** Sets the end contour level value. Must be more than `contours.start` */ + end?: number; + /** + * Determines whether or not contour lines about the y dimension are highlighted on hover. + * @default true + */ + highlight?: boolean; + /** + * Sets the color of the highlighted contour lines. + * @default '#444' + */ + highlightcolor?: Color; + /** + * Sets the width of the highlighted contour lines. + * @default 2 + * Range: [1, 16] + */ + highlightwidth?: number; + project?: { + /** + * Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ + x?: boolean; + /** + * Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ + y?: boolean; + /** + * Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ + z?: boolean; + }; + /** + * Determines whether or not contour lines about the y dimension are drawn. + * @default false + */ + show?: boolean; + /** + * Sets the step between each contour level. Must be positive. + * Minimum: 0 + */ + size?: number; + /** Sets the starting contour level value. Must be less than `contours.end` */ + start?: number; + /** + * An alternate to *color*. Determines whether or not the contour lines are colored using the trace *colorscale*. + * @default false + */ + usecolormap?: boolean; + /** + * Sets the width of the contour lines. + * @default 2 + * Range: [1, 16] + */ + width?: number; + }; + z?: { + /** + * Sets the color of the contour lines. + * @default '#444' + */ + color?: Color; + /** Sets the end contour level value. Must be more than `contours.start` */ + end?: number; + /** + * Determines whether or not contour lines about the z dimension are highlighted on hover. + * @default true + */ + highlight?: boolean; + /** + * Sets the color of the highlighted contour lines. + * @default '#444' + */ + highlightcolor?: Color; + /** + * Sets the width of the highlighted contour lines. + * @default 2 + * Range: [1, 16] + */ + highlightwidth?: number; + project?: { + /** + * Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ + x?: boolean; + /** + * Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ + y?: boolean; + /** + * Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ + z?: boolean; + }; + /** + * Determines whether or not contour lines about the z dimension are drawn. + * @default false + */ + show?: boolean; + /** + * Sets the step between each contour level. Must be positive. + * Minimum: 0 + */ + size?: number; + /** Sets the starting contour level value. Must be less than `contours.end` */ + start?: number; + /** + * An alternate to *color*. Determines whether or not the contour lines are colored using the trace *colorscale*. + * @default false + */ + usecolormap?: boolean; + /** + * Sets the width of the contour lines. + * @default 2 + * Range: [1, 16] + */ + width?: number; + }; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not a surface is drawn. For example, set `hidesurface` to *false* `contours.x.show` to *true* and `contours.y.show` to *true* to draw a wire frame plot. + * @default false + */ + hidesurface?: boolean; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + lighting?: { + /** + * Ambient light increases overall color visibility but can wash out the image. + * @default 0.8 + * Range: [0, 1] + */ + ambient?: number; + /** + * Represents the extent that incident rays are reflected in a range of angles. + * @default 0.8 + * Range: [0, 1] + */ + diffuse?: number; + /** + * Represents the reflectance as a dependency of the viewing angle; e.g. paper is reflective when viewing it from the edge of the paper (almost 90 degrees), causing shine. + * @default 0.2 + * Range: [0, 5] + */ + fresnel?: number; + /** + * Alters specular reflection; the rougher the surface, the wider and less contrasty the shine. + * @default 0.5 + * Range: [0, 1] + */ + roughness?: number; + /** + * Represents the level that incident rays are reflected in a single direction, causing shine. + * @default 0.05 + * Range: [0, 2] + */ + specular?: number; + }; + lightposition?: { + /** + * Numeric vector, representing the X coordinate for each vertex. + * @default 10 + * Range: [-100000, 100000] + */ + x?: number; + /** + * Numeric vector, representing the Y coordinate for each vertex. + * @default 10000 + * Range: [-100000, 100000] + */ + y?: number; + /** + * Numeric vector, representing the Z coordinate for each vertex. + * @default 0 + * Range: [-100000, 100000] + */ + z?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the opacityscale. The opacityscale must be an array containing arrays mapping a normalized value to an opacity value. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 1], [0.5, 0.2], [1, 1]]` means that higher/lower values would have higher opacity values and those in the middle would be more transparent Alternatively, `opacityscale` may be a palette name string of the following list: 'min', 'max', 'extremes' and 'uniform'. The default is 'uniform'. */ + opacityscale?: any; + /** + * Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. + * @default 'scene' + */ + scene?: string; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + /** Sets the surface color values, used for setting a color scale independent of `z`. */ + surfacecolor?: Datum[] | Datum[][] | TypedArray; + /** Sets the text elements associated with each z value. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + type?: 'surface'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the x coordinates. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ + xcalendar?: Calendar; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the y coordinates. */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ + ycalendar?: Calendar; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the z coordinates. */ + z?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the calendar system to use with `z` date data. + * @default 'gregorian' + */ + zcalendar?: Calendar; + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + zhoverformat?: string; +} + +export interface TableData { + cells?: { + /** + * Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. + * @default 'center' + */ + align?: 'left' | 'center' | 'right' | ('left' | 'center' | 'right')[]; + fill?: FontArray; + font?: FontArray; + /** + * Sets the cell value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. + * @default [] + */ + format?: Datum[] | Datum[][] | TypedArray; + /** + * The height of cells. + * @default 20 + */ + height?: number; + line?: _internal.Line; + /** Prefix for cell values. */ + prefix?: string | string[]; + /** Suffix for cell values. */ + suffix?: string | string[]; + /** + * Cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string. + * @default [] + */ + values?: Datum[] | Datum[][] | TypedArray; + }; + /** Specifies the rendered order of the data columns; for example, a value `2` at position `0` means that column index `0` in the data will be rendered as the third column, as columns have an index base of zero. */ + columnorder?: Datum[] | Datum[][] | TypedArray; + /** The width of columns expressed as a ratio. Columns fill the available width in proportion of their specified column widths. */ + columnwidth?: number | number[]; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + domain?: Domain; + header?: { + /** + * Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. + * @default 'center' + */ + align?: 'left' | 'center' | 'right' | ('left' | 'center' | 'right')[]; + fill?: FontArray; + font?: FontArray; + /** + * Sets the cell value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. + * @default [] + */ + format?: Datum[] | Datum[][] | TypedArray; + /** + * The height of cells. + * @default 28 + */ + height?: number; + line?: _internal.Line; + /** Prefix for cell values. */ + prefix?: string | string[]; + /** Suffix for cell values. */ + suffix?: string | string[]; + /** + * Header cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string. + * @default [] + */ + values?: Datum[] | Datum[][] | TypedArray; + }; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + type?: 'table'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface TreemapData { + /** + * Determines how the items in `values` are summed. When set to *total*, items in `values` are taken to be value of all its descendants. When set to *remainder*, items in `values` corresponding to the root and the branches sectors are taken to be the extra part not part of the sum of the values at their leaves. + * @default 'remainder' + */ + branchvalues?: 'remainder' | 'total'; + /** + * Determines default for `values` when it is not provided, by inferring a 1 for each of the *leaves* and/or *branches*, otherwise 0. + * @default 'leaves' + */ + count?: 'branches' | 'leaves' | (string & {}); + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + domain?: Domain; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'label+text+value+name' + */ + hoverinfo?: 'label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}) | ('label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry` and `percentParent`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** Sets the font used for `textinfo` lying inside the sector. */ + insidetextfont?: FontArray; + /** Sets the labels of each of the sectors. */ + labels?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + /** Sets the level from which this trace hierarchy is rendered. Set `level` to `''` to start from the root node in the hierarchy. Must be an "id" if `ids` is filled in, otherwise plotly attempts to find a matching item in `labels`. */ + level?: any; + marker?: { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if colors is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here colors) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if colors is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if colors is set to a numerical array. Value should have the same units as colors. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors. */ + colors?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** + * Sets the maximum rounding of corners (in px). + * @default 0 + * Minimum: 0 + */ + cornerradius?: number; + /** Determines if the sector colors are faded towards the background from the leaves up to the headers. This option is unavailable when a `colorscale` is present, defaults to false when `marker.colors` is set, but otherwise defaults to true. When set to *reversed*, the fading direction is inverted, that is the top elements within hierarchy are drawn with fully saturated colors while the leaves are faded towards the background color. */ + depthfade?: true | false | 'reversed'; + line?: _internal.Line; + pad?: { + /** + * Sets the padding form the bottom (in px). + * Minimum: 0 + */ + b?: number; + /** + * Sets the padding form the left (in px). + * Minimum: 0 + */ + l?: number; + /** + * Sets the padding form the right (in px). + * Minimum: 0 + */ + r?: number; + /** + * Sets the padding form the top (in px). + * Minimum: 0 + */ + t?: number; + }; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + /** + * Reverses the color mapping if true. Has an effect only if colors is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if colors is set to a numerical array. + * @default false + */ + showscale?: boolean; + }; + /** + * Sets the number of rendered sectors from any given `level`. Set `maxdepth` to *-1* to render all the levels in the hierarchy. + * @default -1 + */ + maxdepth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented on top left corner of a treemap graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used. */ + outsidetextfont?: FontArray; + /** Sets the parent sectors for each of the sectors. Empty string items '' are understood to reference the root node in the hierarchy. If `ids` is filled, `parents` items are understood to be "ids" themselves. When `ids` is not set, plotly attempts to find matching items in `labels`, but beware they must be unique. */ + parents?: Datum[] | Datum[][] | TypedArray; + pathbar?: { + /** + * Determines which shape is used for edges between `barpath` labels. + * @default '>' + */ + edgeshape?: '>' | '<' | '|' | '/' | '\\'; + /** + * Determines on which side of the treemap the `pathbar` should be presented. + * @default 'top' + */ + side?: 'top' | 'bottom'; + /** Sets the font used inside `pathbar`. */ + textfont?: FontArray; + /** + * Sets the thickness of `pathbar` (in px). If not specified the `pathbar.textfont.size` is used with 3 pixles extra padding on each side. + * Minimum: 12 + */ + thickness?: number; + /** + * Determines if the path bar is drawn i.e. outside the trace `domain` and with one pixel gap. + * @default true + */ + visible?: boolean; + }; + root?: Font; + /** + * Determines whether or not the sectors are reordered from largest to smallest. + * @default true + */ + sort?: boolean; + /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: Datum[] | Datum[][] | TypedArray; + /** Sets the font used for `textinfo`. */ + textfont?: FontArray; + /** Determines which trace information appear on the graph. */ + textinfo?: 'label' | 'text' | 'value' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'none' | (string & {}); + /** + * Sets the positions of the `text` elements. + * @default 'top left' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + tiling?: { + /** Determines if the positions obtained from solver are flipped on each axis. */ + flip?: 'x' | 'y' | (string & {}); + /** + * Determines d3 treemap solver. For more info please refer to https://github.com/d3/d3-hierarchy#treemap-tiling + * @default 'squarify' + */ + packing?: 'squarify' | 'binary' | 'dice' | 'slice' | 'slice-dice' | 'dice-slice'; + /** + * Sets the inner padding (in px). + * @default 3 + * Minimum: 0 + */ + pad?: number; + /** + * When using *squarify* `packing` algorithm, according to https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#squarify_ratio this option specifies the desired aspect ratio of the generated rectangles. The ratio must be specified as a number greater than or equal to one. Note that the orientation of the generated rectangles (tall or wide) is not implied by the ratio; for example, a ratio of two will attempt to produce a mixture of rectangles whose width:height ratio is either 2:1 or 1:2. When using *squarify*, unlike d3 which uses the Golden Ratio i.e. 1.618034, Plotly applies 1 to increase squares in treemap layouts. + * @default 1 + * Minimum: 1 + */ + squarifyratio?: number; + }; + type?: 'treemap'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the values associated with each of the sectors. Use with `branchvalues` to determine how the values are summed. */ + values?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; +} + +export interface ViolinData { + /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ + alignmentgroup?: string; + /** + * Sets the bandwidth used to compute the kernel density estimate. By default, the bandwidth is determined by Silverman's rule of thumb. + * Minimum: 0 + */ + bandwidth?: number; + box?: { + /** Sets the inner box plot fill color. */ + fillcolor?: Color; + line?: _internal.ErrorY; + /** + * Determines if an miniature box plot is drawn inside the violins. + * @default false + */ + visible?: boolean; + /** + * Sets the width of the inner box plots relative to the violins' width. For example, with 1, the inner box plots are as wide as the violins. + * @default 0.25 + * Range: [0, 1] + */ + width?: number; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** + * Do the hover effects highlight individual violins or sample points or the kernel density estimate or any combination of them? + * @default 'violins+points+kde' + */ + hoveron?: 'violins' | 'points' | 'kde' | 'all' | (string & {}); + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the amount of jitter in the sample points drawn. If *0*, the sample points align along the distribution axis. If *1*, the sample points are drawn in a random jitter of width equal to the width of the violins. + * Range: [0, 1] + */ + jitter?: number; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + line?: _internal.ErrorY; + marker?: { + /** + * Sets the marker angle in respect to `angleref`. + * @default 0 + */ + angle?: number | 'auto'; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color; + line?: { + /** + * Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set. + * @default '#444' + */ + color?: Color; + /** Sets the border line color of the outlier sample points. Defaults to marker.color */ + outliercolor?: Color; + /** + * Sets the border line width (in px) of the outlier sample points. + * @default 1 + * Minimum: 0 + */ + outlierwidth?: number; + /** + * Sets the width (in px) of the lines bounding the marker points. + * @default 0 + * Minimum: 0 + */ + width?: number; + }; + /** + * Sets the marker opacity. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the color of the outlier sample points. + * @default 'rgba(0, 0, 0, 0)' + */ + outliercolor?: Color; + /** + * Sets the marker size (in px). + * @default 6 + * Minimum: 0 + */ + size?: number; + /** + * Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. + * @default 'circle' + */ + symbol?: MarkerSymbol; + }; + meanline?: { + /** Sets the mean line color. */ + color?: Color; + /** + * Determines if a line corresponding to the sample's mean is shown inside the violins. If `box.visible` is turned on, the mean line is drawn inside the inner box. Otherwise, the mean line is drawn from one side of the violin to other. + * @default false + */ + visible?: boolean; + /** + * Sets the mean line width. + * Minimum: 0 + */ + width?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. For violin traces, the name will also be used for the position coordinate, if `x` and `x0` (`y` and `y0` if horizontal) are missing and the position axis is categorical. Note that the trace name is also used as a default value for attribute `scalegroup` (please see its description for details). */ + name?: string; + /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ + offsetgroup?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the orientation of the violin(s). If *v* (*h*), the distribution is visualized along the vertical (horizontal). */ + orientation?: 'v' | 'h'; + /** + * Sets the position of the sample points in relation to the violins. If *0*, the sample points are places over the center of the violins. Positive (negative) values correspond to positions to the right (left) for vertical violins and above (below) for horizontal violins. + * Range: [-2, 2] + */ + pointpos?: number; + /** If *outliers*, only the sample points lying outside the whiskers are shown If *suspectedoutliers*, the outlier points are shown and points either less than 4*Q1-3*Q3 or greater than 4*Q3-3*Q1 are highlighted (see `outliercolor`) If *all*, all sample points are shown If *false*, only the violins are shown with no sample points. Defaults to *suspectedoutliers* when `marker.outliercolor` or `marker.line.outliercolor` is set, otherwise defaults to *outliers*. */ + points?: 'all' | 'outliers' | 'suspectedoutliers' | false; + /** + * Sets the method used to compute the sample's Q1 and Q3 quartiles. The *linear* method uses the 25th percentile for Q1 and 75th percentile for Q3 as computed using method #10 (listed on http://jse.amstat.org/v14n3/langford.html). The *exclusive* method uses the median to divide the ordered dataset into two halves if the sample is odd, it does not include the median in either half - Q1 is then the median of the lower half and Q3 the median of the upper half. The *inclusive* method also uses the median to divide the ordered dataset into two halves but if the sample is odd, it includes the median in both halves - Q1 is then the median of the lower half and Q3 the median of the upper half. + * @default 'linear' + */ + quartilemethod?: 'linear' | 'exclusive' | 'inclusive'; + /** If there are multiple violins that should be sized according to some metric (see `scalemode`), link them by providing a non-empty group id here shared by every trace in the same group. If a violin's `width` is undefined, `scalegroup` will default to the trace's name. In this case, violins with the same names will be linked together */ + scalegroup?: string; + /** + * Sets the metric by which the width of each violin is determined. *width* means each violin has the same (max) width *count* means the violins are scaled by the number of sample points making up each violin. + * @default 'width' + */ + scalemode?: 'width' | 'count'; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ + size?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * Determines on which side of the position value the density function making up one half of a violin is plotted. Useful when comparing two violin traces under *overlay* mode, where one trace has `side` set to *positive* and the other to *negative*. + * @default 'both' + */ + side?: 'both' | 'positive' | 'negative'; + /** Sets the span in data space for which the density function will be computed. Has an effect only when `spanmode` is set to *manual*. */ + span?: [any, any]; + /** + * Sets the method by which the span in data space where the density function will be computed. *soft* means the span goes from the sample's minimum value minus two bandwidths to the sample's maximum value plus two bandwidths. *hard* means the span goes from the sample's minimum to its maximum value. For custom span settings, use mode *manual* and fill in the `span` attribute. + * @default 'soft' + */ + spanmode?: 'soft' | 'hard' | 'manual'; + /** Sets the text elements associated with each sample value. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + text?: string | string[]; + type?: 'violin'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ + size?: number; + }; + }; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** + * Sets the width of the violin in data coordinates. If *0* (default value) the width is automatically selected based on the positions of other violin traces in the same subplot. + * @default 0 + * Minimum: 0 + */ + width?: number; + /** Sets the x sample data or coordinates. See overview for more info. */ + x?: Datum[] | Datum[][] | TypedArray; + /** Sets the x coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ + x0?: any; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the y sample data or coordinates. See overview for more info. */ + y?: Datum[] | Datum[][] | TypedArray; + /** Sets the y coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ + y0?: any; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ + zorder?: number; +} + +export interface VolumeData { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + caps?: { + x?: { + /** + * Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ + fill?: number; + /** + * Sets the fill ratio of the `slices`. The default fill value of the x `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default true + */ + show?: boolean; + }; + y?: { + /** + * Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ + fill?: number; + /** + * Sets the fill ratio of the `slices`. The default fill value of the y `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default true + */ + show?: boolean; + }; + z?: { + /** + * Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ + fill?: number; + /** + * Sets the fill ratio of the `slices`. The default fill value of the z `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default true + */ + show?: boolean; + }; + }; + /** + * Determines whether or not the color domain is computed with respect to the input data (here `value`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Value should have the same units as `value` and if set, `cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as `value`. Has no effect when `cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as `value` and if set, `cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + contour?: { + /** + * Sets the color of the contour lines. + * @default '#444' + */ + color?: Color; + /** + * Sets whether or not dynamic contours are shown on hover + * @default false + */ + show?: boolean; + /** + * Sets the width of the contour lines. + * @default 2 + * Range: [1, 16] + */ + width?: number; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections. + * @default true + */ + flatshading?: boolean; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** Sets the maximum boundary for iso-surface plot. */ + isomax?: number; + /** Sets the minimum boundary for iso-surface plot. */ + isomin?: number; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + lighting?: _internal.Lighting; + lightposition?: { + /** + * Numeric vector, representing the X coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ + x?: number; + /** + * Numeric vector, representing the Y coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ + y?: number; + /** + * Numeric vector, representing the Z coordinate for each vertex. + * @default 0 + * Range: [-100000, 100000] + */ + z?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the opacityscale. The opacityscale must be an array containing arrays mapping a normalized value to an opacity value. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 1], [0.5, 0.2], [1, 1]]` means that higher/lower values would have higher opacity values and those in the middle would be more transparent Alternatively, `opacityscale` may be a palette name string of the following list: 'min', 'max', 'extremes' and 'uniform'. The default is 'uniform'. */ + opacityscale?: any; + /** + * Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. + * @default 'scene' + */ + scene?: string; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ + showlegend?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; + slices?: { + x?: { + /** + * Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ + fill?: number; + /** + * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis x except start and end. + * @default [] + */ + locations?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not slice planes about the x dimension are drawn. + * @default false + */ + show?: boolean; + }; + y?: { + /** + * Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ + fill?: number; + /** + * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis y except start and end. + * @default [] + */ + locations?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not slice planes about the y dimension are drawn. + * @default false + */ + show?: boolean; + }; + z?: { + /** + * Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ + fill?: number; + /** + * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis z except start and end. + * @default [] + */ + locations?: Datum[] | Datum[][] | TypedArray; + /** + * Determines whether or not slice planes about the z dimension are drawn. + * @default false + */ + show?: boolean; + }; + }; + spaceframe?: { + /** + * Sets the fill ratio of the `spaceframe` elements. The default fill value is 1 meaning that they are entirely shaded. Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ + fill?: number; + /** + * Displays/hides tetrahedron shapes between minimum and maximum iso-values. Often useful when either caps or surfaces are disabled or filled with values less than 1. + * @default false + */ + show?: boolean; + }; + surface?: { + /** + * Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn. + * @default 2 + * Minimum: 1 + */ + count?: number; + /** + * Sets the fill ratio of the iso-surface. The default fill value of the surface is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ + fill?: number; + /** + * Sets the surface pattern of the iso-surface 3-D sections. The default pattern of the surface is `all` meaning that the rest of surface elements would be shaded. The check options (either 1 or 2) could be used to draw half of the squares on the surface. Using various combinations of capital `A`, `B`, `C`, `D` and `E` may also be used to reduce the number of triangles on the iso-surfaces and creating other patterns of interest. + * @default 'all' + */ + pattern?: 'A' | 'B' | 'C' | 'D' | 'E' | 'all' | 'odd' | 'even' | (string & {}); + /** + * Hides/displays surfaces between minimum and maximum iso-values. + * @default true + */ + show?: boolean; + }; + /** Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + type?: 'volume'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the 4th dimension (value) of the vertices. */ + value?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + valuehoverformat?: string; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the X coordinates of the vertices on X axis. */ + x?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the Y coordinates of the vertices on Y axis. */ + y?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the Z coordinates of the vertices on Z axis. */ + z?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + zhoverformat?: string; +} + +export interface WaterfallData { + /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ + alignmentgroup?: string; + /** Sets where the bar base is drawn (in position axis units). */ + base?: number; + /** + * Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default true + */ + cliponaxis?: boolean; + connector?: { + line?: { + /** + * Sets the line color. + * @default '#444' + */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ + width?: number; + }; + /** + * Sets the shape of connector lines. + * @default 'between' + */ + mode?: 'spanning' | 'between'; + /** + * Determines if connector lines are drawn. + * @default true + */ + visible?: boolean; + }; + /** + * Constrain the size of text inside or outside a bar to be no larger than the bar itself. + * @default 'both' + */ + constraintext?: 'inside' | 'outside' | 'both' | 'none'; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + decreasing?: { + marker?: { + /** Sets the marker color of all decreasing values. */ + color?: Color; + line?: _internal.ErrorY; + }; + }; + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + */ + dx?: number; + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + */ + dy?: number; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'name' | 'x' | 'y' | 'text' | 'initial' | 'delta' | 'final' | 'all' | 'none' | 'skip' | (string & {}) | ('name' | 'x' | 'y' | 'text' | 'initial' | 'delta' | 'final' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `initial`, `delta` and `final`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + increasing?: { + marker?: { + /** Sets the marker color of all increasing values. */ + color?: Color; + line?: _internal.ErrorY; + }; + }; + /** + * Determines if texts are kept at center or start/end points in `textposition` *inside* mode. + * @default 'end' + */ + insidetextanchor?: 'end' | 'middle' | 'start'; + /** Sets the font used for `text` lying inside the bar. */ + insidetextfont?: FontArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + /** + * An array containing types of values. By default the values are considered as 'relative'. However; it is possible to use 'total' to compute the sums. Also 'absolute' could be applied to reset the computed total or to declare an initial value where needed. + * @default [] + */ + measure?: Datum[] | Datum[][] | TypedArray; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Shifts the position where the bar is drawn (in position axis units). In *group* barmode, traces that set *offset* will be excluded and drawn in *overlay* mode instead. */ + offset?: number | number[]; + /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ + offsetgroup?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the orientation of the bars. With *v* (*h*), the value of the each bar spans along the vertical (horizontal). */ + orientation?: 'v' | 'h'; + /** Sets the font used for `text` lying outside the bar. */ + outsidetextfont?: FontArray; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** + * Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. + * @default 'auto' + */ + textangle?: number | 'auto'; + /** Sets the font used for `text`. */ + textfont?: FontArray; + /** Determines which trace information appear on the graph. In the case of having multiple waterfalls, totals are computed separately (per trace). */ + textinfo?: 'label' | 'text' | 'initial' | 'delta' | 'final' | 'none' | (string & {}); + /** + * Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. + * @default 'auto' + */ + textposition?: 'inside' | 'outside' | 'auto' | 'none' | ('inside' | 'outside' | 'auto' | 'none')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `initial`, `delta`, `final` and `label`. */ + texttemplate?: string | string[]; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + totals?: { + marker?: { + /** Sets the marker color of all intermediate sums and total values. */ + color?: Color; + line?: _internal.ErrorY; + }; + }; + type?: 'waterfall'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** + * Sets the bar width (in position axis units). + * Minimum: 0 + */ + width?: number | number[]; + /** Sets the x coordinates. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + */ + x0?: any; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the y coordinates. */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + */ + y0?: any; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ + yperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + yperiod0?: any; + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + */ + yperiodalignment?: 'start' | 'middle' | 'end'; + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ + zorder?: number; +} + +/** + * Union of every trace shape. All fields are optional via `Partial<…>` — + * narrow with the `type` discriminator before accessing trace-specific + * attributes: + * + * if (trace.type === 'bar') { trace.marker?.cornerradius } + * if (trace.type === 'pie') { trace.marker?.colors } + */ +export type Data = + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial; + +// --------------------------------------------------------------------------- +// Layout component interfaces +// --------------------------------------------------------------------------- + +export interface ColorAxis { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here corresponding trace color array(s)) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Value should have the same units as corresponding trace color array(s) and if set, `cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as corresponding trace color array(s). Has no effect when `cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Value should have the same units as corresponding trace color array(s) and if set, `cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + colorbar?: ColorBar; + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** + * Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ + showscale?: boolean; +} + +export interface GeoLayout { + /** + * Set the background color of the map + * @default '#fff' + */ + bgcolor?: Color; + center?: { + /** Sets the latitude of the map's center. For all projection types, the map's latitude center lies at the middle of the latitude range by default. */ + lat?: number; + /** Sets the longitude of the map's center. By default, the map's longitude center lies at the middle of the longitude range for scoped projection and above `projection.rotation.lon` otherwise. */ + lon?: number; + }; + /** + * Sets the coastline color. + * @default '#444' + */ + coastlinecolor?: Color; + /** + * Sets the coastline stroke width (in px). + * @default 1 + * Minimum: 0 + */ + coastlinewidth?: number; + /** + * Sets line color of the country boundaries. + * @default '#444' + */ + countrycolor?: Color; + /** + * Sets line width (in px) of the country boundaries. + * @default 1 + * Minimum: 0 + */ + countrywidth?: number; + domain?: Domain; + /** + * Determines if this subplot's view settings are auto-computed to fit trace data. On scoped maps, setting `fitbounds` leads to `center.lon` and `center.lat` getting auto-filled. On maps with a non-clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`, and `projection.rotation.lon` getting auto-filled. On maps with a clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`, `projection.rotation.lon`, `projection.rotation.lat`, `lonaxis.range` and `lataxis.range` getting auto-filled. If *locations*, only the trace's visible locations are considered in the `fitbounds` computations. If *geojson*, the entire trace input `geojson` (if provided) is considered in the `fitbounds` computations, Defaults to *false*. + * @default false + */ + fitbounds?: false | 'locations' | 'geojson'; + /** + * Sets the color the frame. + * @default '#444' + */ + framecolor?: Color; + /** + * Sets the stroke width (in px) of the frame. + * @default 1 + * Minimum: 0 + */ + framewidth?: number; + /** + * Sets the color of the lakes. + * @default '#3399FF' + */ + lakecolor?: Color; + /** + * Sets the land mass color. + * @default '#F0DC82' + */ + landcolor?: Color; + lataxis?: { + /** Sets the graticule's longitude/latitude tick step. */ + dtick?: number; + /** + * Sets the graticule's stroke color. + * @default '#eee' + */ + gridcolor?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + griddash?: Dash; + /** + * Sets the graticule's stroke width (in px). + * @default 1 + * Minimum: 0 + */ + gridwidth?: number; + /** Sets the range of this axis (in degrees), sets the map's clipped coordinates. */ + range?: [number, number]; + /** + * Sets whether or not graticule are shown on the map. + * @default false + */ + showgrid?: boolean; + /** + * Sets the graticule's starting tick longitude/latitude. + * @default 0 + */ + tick0?: number; + }; + lonaxis?: { + /** Sets the graticule's longitude/latitude tick step. */ + dtick?: number; + /** + * Sets the graticule's stroke color. + * @default '#eee' + */ + gridcolor?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + griddash?: Dash; + /** + * Sets the graticule's stroke width (in px). + * @default 1 + * Minimum: 0 + */ + gridwidth?: number; + /** Sets the range of this axis (in degrees), sets the map's clipped coordinates. */ + range?: [number, number]; + /** + * Sets whether or not graticule are shown on the map. + * @default false + */ + showgrid?: boolean; + /** + * Sets the graticule's starting tick longitude/latitude. + * @default 0 + */ + tick0?: number; + }; + /** + * Sets the ocean color + * @default '#3399FF' + */ + oceancolor?: Color; + projection?: { + /** + * For satellite projection type only. Sets the distance from the center of the sphere to the point of view as a proportion of the sphere’s radius. + * @default 2 + * Minimum: 1.001 + */ + distance?: number; + /** For conic projection types only. Sets the parallels (tangent, secant) where the cone intersects the sphere. */ + parallels?: [number, number]; + rotation?: { + /** Rotates the map along meridians (in degrees North). */ + lat?: number; + /** Rotates the map along parallels (in degrees East). Defaults to the center of the `lonaxis.range` values. */ + lon?: number; + /** Roll the map (in degrees) For example, a roll of *180* makes the map appear upside down. */ + roll?: number; + }; + /** + * Zooms in or out on the map view. A scale of *1* corresponds to the largest zoom level that fits the map's lon and lat ranges. + * @default 1 + * Minimum: 0 + */ + scale?: number; + /** + * For satellite projection type only. Sets the tilt angle of perspective projection. + * @default 0 + */ + tilt?: number; + /** Sets the projection type. */ + type?: 'airy' | 'aitoff' | 'albers' | 'albers usa' | 'august' | 'azimuthal equal area' | 'azimuthal equidistant' | 'baker' | 'bertin1953' | 'boggs' | 'bonne' | 'bottomley' | 'bromley' | 'collignon' | 'conic conformal' | 'conic equal area' | 'conic equidistant' | 'craig' | 'craster' | 'cylindrical equal area' | 'cylindrical stereographic' | 'eckert1' | 'eckert2' | 'eckert3' | 'eckert4' | 'eckert5' | 'eckert6' | 'eisenlohr' | 'equal earth' | 'equirectangular' | 'fahey' | 'foucaut' | 'foucaut sinusoidal' | 'ginzburg4' | 'ginzburg5' | 'ginzburg6' | 'ginzburg8' | 'ginzburg9' | 'gnomonic' | 'gringorten' | 'gringorten quincuncial' | 'guyou' | 'hammer' | 'hill' | 'homolosine' | 'hufnagel' | 'hyperelliptical' | 'kavrayskiy7' | 'lagrange' | 'larrivee' | 'laskowski' | 'loximuthal' | 'mercator' | 'miller' | 'mollweide' | 'mt flat polar parabolic' | 'mt flat polar quartic' | 'mt flat polar sinusoidal' | 'natural earth' | 'natural earth1' | 'natural earth2' | 'nell hammer' | 'nicolosi' | 'orthographic' | 'patterson' | 'peirce quincuncial' | 'polyconic' | 'rectangular polyconic' | 'robinson' | 'satellite' | 'sinu mollweide' | 'sinusoidal' | 'stereographic' | 'times' | 'transverse mercator' | 'van der grinten' | 'van der grinten2' | 'van der grinten3' | 'van der grinten4' | 'wagner4' | 'wagner6' | 'wiechel' | 'winkel tripel' | 'winkel3'; + }; + /** + * Sets the resolution of the base layers. The values have units of km/mm e.g. 110 corresponds to a scale ratio of 1:110,000,000. + * @default 110 + */ + resolution?: 110 | 50; + /** + * Sets color of the rivers. + * @default '#3399FF' + */ + rivercolor?: Color; + /** + * Sets the stroke width (in px) of the rivers. + * @default 1 + * Minimum: 0 + */ + riverwidth?: number; + /** + * Set the scope of the map. + * @default 'world' + */ + scope?: 'africa' | 'antarctica' | 'asia' | 'europe' | 'north america' | 'oceania' | 'south america' | 'usa' | 'world'; + /** Sets whether or not the coastlines are drawn. */ + showcoastlines?: boolean; + /** Sets whether or not country boundaries are drawn. */ + showcountries?: boolean; + /** Sets whether or not a frame is drawn around the map. */ + showframe?: boolean; + /** + * Sets whether or not lakes are drawn. + * @default false + */ + showlakes?: boolean; + /** + * Sets whether or not land masses are filled in color. + * @default false + */ + showland?: boolean; + /** + * Sets whether or not oceans are filled in color. + * @default false + */ + showocean?: boolean; + /** + * Sets whether or not rivers are drawn. + * @default false + */ + showrivers?: boolean; + /** Sets whether or not boundaries of subunits within countries (e.g. states, provinces) are drawn. */ + showsubunits?: boolean; + /** + * Sets the color of the subunits boundaries. + * @default '#444' + */ + subunitcolor?: Color; + /** + * Sets the stroke width (in px) of the subunits boundaries. + * @default 1 + * Minimum: 0 + */ + subunitwidth?: number; + /** Controls persistence of user-driven changes in the view (projection and center). Defaults to `layout.uirevision`. */ + uirevision?: any; + /** + * Sets the default visibility of the base layers. + * @default true + */ + visible?: boolean; +} + +export interface LayoutAxis { + /** If set to an opposite-letter axis id (e.g. `x2`, `y`), this axis is bound to the corresponding opposite-letter axis. If set to *free*, this axis' position is determined by `position`. */ + anchor?: 'free' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** + * Determines whether long tick labels automatically grow the figure margins. + * @default false + */ + automargin?: 'height' | 'width' | 'left' | 'right' | 'top' | 'bottom' | true | false | (string & {}); + /** + * Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. + * @default true + */ + autorange?: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; + autorangeoptions?: _internal.AutoRangeOptions; + /** + * Automatically reposition the axis to avoid overlap with other axes with the same `overlaying` value. This repositioning will account for any `shift` amount applied to other axes on the same side with `autoshift` is set to true. Only has an effect if `anchor` is set to *free*. + * @default false + */ + autoshift?: boolean; + /** + * When `tickangle` is set to *auto*, it will be set to the first angle in this array that is large enough to prevent label overlap. + * @default [0,30,90] + */ + autotickangles?: any[]; + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ + autotypenumbers?: 'convert types' | 'strict'; + /** + * Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` + * @default 'gregorian' + */ + calendar?: Calendar; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | Datum[][] | TypedArray; + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. + * @default 'trace' + */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ + color?: Color; + /** If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or those of the other axis), determines how that happens: by increasing the *range*, or by decreasing the *domain*. Default is *domain* for axes containing image traces, *range* otherwise. */ + constrain?: 'range' | 'domain'; + /** If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or those of the other axis), determines which direction we push the originally specified plot area. Options are *left*, *center* (default), and *right* for x axes, and *top*, *middle* (default), and *bottom* for y axes. */ + constraintoward?: 'left' | 'center' | 'right' | 'top' | 'middle' | 'bottom'; + /** + * Sets the color of the dividers Only has an effect on *multicategory* axes. + * @default '#444' + */ + dividercolor?: Color; + /** + * Sets the width (in px) of the dividers Only has an effect on *multicategory* axes. + * @default 1 + */ + dividerwidth?: number; + /** + * Sets the domain of this axis (in plot fraction). + * @default [0,1] + */ + domain?: [number, number]; + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ + dtick?: any; + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** + * Determines whether or not this axis is zoom-able. If true, then zoom is disabled. + * @default false + */ + fixedrange?: boolean; + /** + * Sets the color of the grid lines. + * @default '#eee' + */ + gridcolor?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + griddash?: Dash; + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** Could be used to set the desired inside range of this axis (excluding the labels) when `ticklabelposition` of the anchored axis has *inside*. Not implemented for axes with `type` *log*. This would be ignored when `range` is provided. */ + insiderange?: [any, any]; + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ + labelalias?: any; + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ + layer?: 'above traces' | 'below traces'; + /** + * Sets the axis line color. + * @default '#444' + */ + linecolor?: Color; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + linewidth?: number; + /** If set to another axis id (e.g. `x2`, `y`), the range of this axis will match the range of the corresponding axis in data-coordinates space. Moreover, matching axes share auto-range values, category lists and histogram auto-bins. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Moreover, note that matching axes must have the same `type`. */ + matches?: '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** + * Determines the maximum range of this axis. + * Setting this also sets: ^autorange = false + */ + maxallowed?: any; + /** + * Determines the minimum range of this axis. + * Setting this also sets: ^autorange = false + */ + minallowed?: any; + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ + minexponent?: number; + minor?: { + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ + dtick?: any; + /** + * Sets the color of the grid lines. + * @default '#eee' + */ + gridcolor?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + griddash?: Dash; + /** + * Sets the width (in px) of the grid lines. + * Minimum: 0 + */ + gridwidth?: number; + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 5 + * Minimum: 0 + */ + nticks?: number; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ + tick0?: any; + /** + * Sets the tick color. + * @default '#444' + */ + tickcolor?: Color; + /** + * Sets the tick length (in px). + * Minimum: 0 + */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the tick width (in px). + * Minimum: 0 + */ + tickwidth?: number; + }; + /** + * Determines how minor log labels are displayed. If *small digits*, small digits i.e. 2 or 5 are displayed. If *complete*, complete digits are displayed. If *none*, no labels are displayed. + * @default 'small digits' + */ + minorloglabels?: 'small digits' | 'complete' | 'none'; + /** + * Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. + * @default false + */ + mirror?: true | 'ticks' | false | 'all' | 'allticks'; + /** + * Disables certain modebar buttons for this axis. *autoscale* disables the autoscale buttons, *zoominout* disables the zoom-in and zoom-out buttons. + * @default 'none' + */ + modebardisable?: 'autoscale' | 'zoominout' | 'none' | (string & {}); + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ + nticks?: number; + /** If set a same-letter axis id, this axis is overlaid on top of the corresponding same-letter axis, with traces and axes visible for both axes. If *false*, this axis does not overlay any same-letter axes. In this case, for axes with overlapping domains only the highest-numbered axis will be visible. */ + overlaying?: 'free' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** + * Sets the position of this axis in the plotting space (in normalized coordinates). Only has an effect if `anchor` is set to *free*. + * @default 0 + * Range: [0, 1] + */ + position?: number; + /** + * Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. + * Setting this also sets: autorange = false + */ + range?: [any, any]; + rangebreaks?: Array<{ + /** Sets the lower and upper bounds of this axis rangebreak. Can be used with `pattern`. */ + bounds?: [any, any]; + /** + * Sets the size of each `values` item. The default is one day in milliseconds. + * @default 86400000 + * Minimum: 0 + */ + dvalue?: number; + /** + * Determines whether this axis rangebreak is enabled or disabled. Please note that `rangebreaks` only work for *date* axis type. + * @default true + */ + enabled?: boolean; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Determines a pattern on the time line that generates breaks. If *day of week* - days of the week in English e.g. 'Sunday' or `sun` (matching is case-insensitive and considers only the first three characters), as well as Sunday-based integers between 0 and 6. If *hour* - hour (24-hour clock) as decimal numbers between 0 and 24. for more info. Examples: - { pattern: 'day of week', bounds: [6, 1] } or simply { bounds: ['sat', 'mon'] } breaks from Saturday to Monday (i.e. skips the weekends). - { pattern: 'hour', bounds: [17, 8] } breaks from 5pm to 8am (i.e. skips non-work hours). */ + pattern?: 'day of week' | 'hour' | ''; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Sets the coordinate values corresponding to the rangebreaks. An alternative to `bounds`. Use `dvalue` to set the size of the values along the axis. */ + values?: any[]; + }>; + /** + * If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. + * @default 'normal' + */ + rangemode?: 'normal' | 'tozero' | 'nonnegative'; + rangeselector?: { + /** Sets the background color of the active range selector button. */ + activecolor?: Color; + /** + * Sets the background color of the range selector buttons. + * @default '#eee' + */ + bgcolor?: Color; + /** + * Sets the color of the border enclosing the range selector. + * @default '#444' + */ + bordercolor?: Color; + /** + * Sets the width (in px) of the border enclosing the range selector. + * @default 0 + * Minimum: 0 + */ + borderwidth?: number; + buttons?: Array<{ + /** + * Sets the number of steps to take to update the range. Use with `step` to specify the update interval. + * @default 1 + * Minimum: 0 + */ + count?: number; + /** Sets the text label to appear on the button. */ + label?: string; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** + * The unit of measurement that the `count` value will set the range by. + * @default 'month' + */ + step?: 'month' | 'year' | 'day' | 'hour' | 'minute' | 'second' | 'all'; + /** + * Sets the range update mode. If *backward*, the range update shifts the start of range back *count* times *step* milliseconds. If *todate*, the range update shifts the start of range back to the first timestamp from *count* times *step* milliseconds back. For example, with `step` set to *year* and `count` set to *1* the range update shifts the start of the range back to January 01 of the current year. Month and year *todate* are currently available only for the built-in (Gregorian) calendar. + * @default 'backward' + */ + stepmode?: 'backward' | 'todate'; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** + * Determines whether or not this button is visible. + * @default true + */ + visible?: boolean; + }>; + /** Sets the font of the range selector button text. */ + font?: Font; + /** Determines whether or not this range selector is visible. Note that range selectors are only available for x axes of `type` set to or auto-typed to *date*. */ + visible?: boolean; + /** + * Sets the x position (in normalized coordinates) of the range selector. + * Range: [-2, 3] + */ + x?: number; + /** + * Sets the range selector's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector. + * @default 'left' + */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** + * Sets the y position (in normalized coordinates) of the range selector. + * Range: [-2, 3] + */ + y?: number; + /** + * Sets the range selector's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector. + * @default 'bottom' + */ + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; + }; + rangeslider?: { + /** + * Determines whether or not the range slider range is computed in relation to the input data. If `range` is provided, then `autorange` is set to *false*. + * @default true + */ + autorange?: boolean; + /** + * Sets the background color of the range slider. + * @default '#fff' + */ + bgcolor?: Color; + /** + * Sets the border color of the range slider. + * @default '#444' + */ + bordercolor?: Color; + /** + * Sets the border width of the range slider. + * @default 0 + * Minimum: 0 + */ + borderwidth?: number; + /** + * Sets the range of the range slider. If not set, defaults to the full xaxis range. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: autorange = false + */ + range?: [any, any]; + /** + * The height of the range slider as a fraction of the total plot area height. + * @default 0.15 + * Range: [0, 1] + */ + thickness?: number; + /** + * Determines whether or not the range slider will be visible. If visible, perpendicular axes will be set to `fixedrange` + * @default true + */ + visible?: boolean; + yaxis?: { + /** Sets the range of this axis for the rangeslider. */ + range?: [any, any]; + /** + * Determines whether or not the range of this axis in the rangeslider use the same value than in the main plot when zooming in/out. If *auto*, the autorange will be used. If *fixed*, the `range` is used. If *match*, the current range of the corresponding y-axis on the main subplot is used. + * @default 'match' + */ + rangemode?: 'auto' | 'fixed' | 'match'; + }; + }; + /** If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Setting `false` allows to remove a default constraint (occasionally, you may need to prevent a default `scaleanchor` constraint from being applied, eg. when having an image trace `yaxis: {scaleanchor: "x"}` is set automatically in order for pixels to be rendered as squares, setting `yaxis: {scaleanchor: false}` allows to remove the constraint). */ + scaleanchor?: '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/' | false; + /** + * If this axis is linked to another by `scaleanchor`, this determines the pixel to unit scale ratio. For example, if this value is 10, then every unit on this axis spans 10 times the number of pixels as a unit on the linked axis. Use this for example to create an elevation profile where the vertical scale is exaggerated a fixed amount with respect to the horizontal. + * @default 1 + * Minimum: 0 + */ + scaleratio?: number; + /** + * If "true", even 4-digit integers are separated + * @default false + */ + separatethousands?: boolean; + /** Moves the axis a given number of pixels from where it would have been otherwise. Accepts both positive and negative values, which will shift the axis either right or left, respectively. If `autoshift` is set to true, then this defaults to a padding of -3 if `side` is set to *left*. and defaults to +3 if `side` is set to *right*. Defaults to 0 if `autoshift` is set to false. Only has an effect if `anchor` is set to *free*. */ + shift?: number; + /** + * Determines whether or not a dividers are drawn between the category levels of this axis. Only has an effect on *multicategory* axes. + * @default true + */ + showdividers?: boolean; + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** + * Determines whether or not a line bounding this axis is drawn. + * @default false + */ + showline?: boolean; + /** + * Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest + * @default false + */ + showspikes?: boolean; + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ + showticklabels?: boolean; + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether a x (y) axis is positioned at the *bottom* (*left*) or *top* (*right*) of the plotting area. */ + side?: 'top' | 'bottom' | 'left' | 'right'; + /** Sets the spike color. If undefined, will use the series color */ + spikecolor?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'dash' + */ + spikedash?: Dash; + /** + * Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on + * @default 'toaxis' + */ + spikemode?: 'toaxis' | 'across' | 'marker' | (string & {}); + /** + * Determines whether spikelines are stuck to the cursor or to the closest datapoints. + * @default 'hovered data' + */ + spikesnap?: 'data' | 'cursor' | 'hovered data'; + /** + * Sets the width (in px) of the zero line. + * @default 3 + */ + spikethickness?: number; + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ + tick0?: any; + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ + tickangle?: number | 'auto'; + /** + * Sets the tick color. + * @default '#444' + */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date axes with `ticklabelmode` *period* if you want to label the period that ends with each major tick instead of the period that begins there. */ + ticklabelindex?: number | number[]; + /** + * Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks. + * @default 'instant' + */ + ticklabelmode?: 'instant' | 'period'; + /** Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. Otherwise on *category* and *multicategory* axes the default is *allow*. In other cases the default is *hide past div*. */ + ticklabeloverflow?: 'allow' | 'hide past div' | 'hide past domain'; + /** + * Determines where tick labels are drawn with respect to the axis. Please note that top or bottom has no effect on x axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Similarly, left or right has no effect on y axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Has no effect on *multicategory* axes. When used on axes linked by `matches` or `scaleanchor`, no extra padding for inside labels would be added by autorange, so that the scales could match. + * @default 'outside' + */ + ticklabelposition?: 'outside' | 'inside' | 'outside top' | 'inside top' | 'outside left' | 'inside left' | 'outside right' | 'inside right' | 'outside bottom' | 'inside bottom'; + /** + * Shifts the tick labels by the specified number of pixels in parallel to the axis. Positive values move the labels in the positive direction of the axis. + * @default 0 + */ + ticklabelshift?: number; + /** + * Sets the standoff distance (in px) between the axis tick labels and their default position. A positive `ticklabelstandoff` moves the labels farther away from the plot area if `ticklabelposition` is *outside*, and deeper into the plot area if `ticklabelposition` is *inside*. A negative `ticklabelstandoff` works in the opposite direction, moving outside ticks towards the plot area and inside ticks towards the outside. If the negative value is large enough, inside ticks can even end up outside and vice versa. + * @default 0 + */ + ticklabelstandoff?: number; + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ + ticklabelstep?: number; + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property. When no other tick info is provided, overlaying (non-categorical) axes default to *sync*, while other axes default to *auto*. */ + tickmode?: 'auto' | 'linear' | 'array' | 'sync'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** + * Determines where ticks and grid lines are drawn with respect to their corresponding tick labels. Only has an effect for axes of `type` *category* or *multicategory*. When set to *boundaries*, ticks and grid lines are drawn half a category to the left/bottom of labels. + * @default 'labels' + */ + tickson?: 'labels' | 'boundaries'; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | Datum[][] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ + tickwidth?: number; + title?: { + /** Sets this axis' title font. */ + font?: Font; + /** + * Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance. + * Minimum: 0 + */ + standoff?: number; + /** Sets the title of this axis. */ + text?: string; + }; + /** + * Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. + * @default '-' + */ + type?: AxisType; + /** Controls persistence of user-driven changes in axis `range`, `autorange`, and `title` if in `editable: true` configuration. Defaults to `layout.uirevision`. */ + uirevision?: any; + unifiedhovertitle?: LegendGroupTitle; + /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + visible?: boolean; + /** Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines. */ + zeroline?: boolean; + /** + * Sets the line color of the zero line. + * @default '#444' + */ + zerolinecolor?: Color; + /** + * Sets the layer on which this zeroline is displayed. If *above traces*, this zeroline is displayed above all the subplot's traces If *below traces*, this zeroline is displayed below all the subplot's traces, but above the grid lines. Limitation: *zerolinelayer* currently has no effect if the *zorder* property is set on any trace. + * @default 'below traces' + */ + zerolinelayer?: 'above traces' | 'below traces'; + /** + * Sets the width (in px) of the zero line. + * @default 1 + */ + zerolinewidth?: number; +} + +export interface Legend { + /** Sets the legend background color. Defaults to `layout.paper_bgcolor`. */ + bgcolor?: Color; + /** + * Sets the color of the border enclosing the legend. + * @default '#444' + */ + bordercolor?: Color; + /** + * Sets the width (in px) of the border enclosing the legend. + * @default 0 + * Minimum: 0 + */ + borderwidth?: number; + /** + * Sets the width (in px or fraction) of the legend. Use 0 to size the entry based on the text width, when `entrywidthmode` is set to *pixels*. + * Minimum: 0 + */ + entrywidth?: number; + /** + * Determines what entrywidth means. + * @default 'pixels' + */ + entrywidthmode?: 'fraction' | 'pixels'; + /** Sets the font used to text the legend items. */ + font?: Font; + /** + * Determines the behavior on legend group item click. *toggleitem* toggles the visibility of the individual item clicked on the graph. *togglegroup* toggles the visibility of all items in the same legendgroup as the item clicked on the graph. + * @default 'togglegroup' + */ + groupclick?: 'toggleitem' | 'togglegroup'; + /** Sets the font for group titles in legend. Defaults to `legend.font` with its size increased about 10%. */ + grouptitlefont?: Font; + /** + * Sets the indentation (in px) of the legend entries. + * @default 0 + * Minimum: -15 + */ + indentation?: number; + /** + * Determines the behavior on legend item click. *toggle* toggles the visibility of the item clicked on the graph. *toggleothers* makes the clicked item the sole visible item on the graph. *false* disables legend item click interactions. + * @default 'toggle' + */ + itemclick?: 'toggle' | 'toggleothers' | false; + /** + * Determines the behavior on legend item double-click. *toggle* toggles the visibility of the item clicked on the graph. *toggleothers* makes the clicked item the sole visible item on the graph. *false* disables legend item double-click interactions. + * @default 'toggleothers' + */ + itemdoubleclick?: 'toggle' | 'toggleothers' | false; + /** + * Determines if the legend items symbols scale with their corresponding *trace* attributes or remain *constant* independent of the symbol size on the graph. + * @default 'trace' + */ + itemsizing?: 'trace' | 'constant'; + /** + * Sets the width (in px) of the legend item symbols (the part other than the title.text). + * @default 30 + * Minimum: 30 + */ + itemwidth?: number; + /** + * Sets the max height (in px) of the legend, or max height ratio (reference height * ratio) if less than or equal to 1. Default value is: 0.5 for horizontal legends; 1 for vertical legends. The minimum allowed height is 30px. For a ratio of 0.5, the legend will take up to 50% of the reference height before displaying a scrollbar. The reference height is the full layout height with the following exception: vertically oriented legends with a `yref` of `"paper", located to the side of the plot. In this case, the reference height is the plot height. + * Minimum: 0 + */ + maxheight?: number; + /** + * Sets the orientation of the legend. + * @default 'v' + */ + orientation?: 'v' | 'h'; + title?: { + /** Sets this legend's title font. Defaults to `legend.font` with its size increased about 20%. */ + font?: Font; + /** Determines the location of legend's title with respect to the legend items. Defaulted to *top* with `orientation` is *h*. Defaulted to *left* with `orientation` is *v*. The *top left* options could be used to expand top center and top right are for horizontal alignment legend area in both x and y sides. */ + side?: 'top' | 'left' | 'top left' | 'top center' | 'top right'; + /** Sets the title of the legend. */ + text?: string; + }; + /** Determines the behavior on legend title click. *toggle* toggles the visibility of all items in the legend. *toggleothers* toggles the visibility of all other legends. *false* disables legend title click interactions. Defaults to *toggle* when there are multiple legends, *false* otherwise. Not supported for legends containing pie and pie-like traces. */ + titleclick?: 'toggle' | 'toggleothers' | false; + /** Determines the behavior on legend title double-click. *toggle* toggles the visibility of all items in the legend. *toggleothers* toggles the visibility of all other legends. *false* disables legend title double-click interactions. Defaults to *toggleothers* when there are multiple legends, *false* otherwise. Not supported for legends containing pie and pie-like traces. */ + titledoubleclick?: 'toggle' | 'toggleothers' | false; + /** + * Sets the amount of vertical space (in px) between legend groups. + * @default 10 + * Minimum: 0 + */ + tracegroupgap?: number; + /** Determines the order at which the legend items are displayed. If *normal*, the items are displayed top-to-bottom in the same order as the input data. If *reversed*, the items are displayed in the opposite order as *normal*. If *grouped*, the items are displayed in groups (when a trace `legendgroup` is provided). if *grouped+reversed*, the items are displayed in the opposite order as *grouped*. */ + traceorder?: 'reversed' | 'grouped' | 'normal' | (string & {}); + /** Controls persistence of legend-driven changes in trace and pie label visibility. Defaults to `layout.uirevision`. */ + uirevision?: any; + /** + * Sets the vertical alignment of the symbols with respect to their associated text. + * @default 'middle' + */ + valign?: 'top' | 'middle' | 'bottom'; + /** + * Determines whether or not this legend is visible. + * @default true + */ + visible?: boolean; + /** Sets the x position with respect to `xref` (in normalized coordinates) of the legend. When `xref` is *paper*, defaults to *1.02* for vertical legends and defaults to *0* for horizontal legends. When `xref` is *container*, defaults to *1* for vertical legends and defaults to *0* for horizontal legends. Must be between *0* and *1* if `xref` is *container*. and between *-2* and *3* if `xref` is *paper*. */ + x?: number; + /** + * Sets the legend's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the legend. Value *auto* anchors legends to the right for `x` values greater than or equal to 2/3, anchors legends to the left for `x` values less than or equal to 1/3 and anchors legends with respect to their center otherwise. + * @default 'left' + */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** + * Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only. + * @default 'paper' + */ + xref?: YRef; + /** Sets the y position with respect to `yref` (in normalized coordinates) of the legend. When `yref` is *paper*, defaults to *1* for vertical legends, defaults to *-0.1* for horizontal legends on graphs w/o range sliders and defaults to *1.1* for horizontal legends on graph with one or multiple range sliders. When `yref` is *container*, defaults to *1*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*. */ + y?: number; + /** Sets the legend's vertical position anchor. This anchor binds the `y` position to the *top*, *middle* or *bottom* of the legend. Value *auto* anchors legends at their bottom for `y` values less than or equal to 1/3, anchors legends to at their top for `y` values greater than or equal to 2/3 and anchors legends with respect to their middle otherwise. */ + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; + /** + * Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only. + * @default 'paper' + */ + yref?: YRef; +} + +export interface MapLayout { + /** Sets the mapbox access token to be used for this mapbox map. Alternatively, the mapbox access token can be set in the configuration options under `mapboxAccessToken`. Note that accessToken are only required when `style` (e.g with values : basic, streets, outdoors, light, dark, satellite, satellite-streets ) and/or a layout layer references the Mapbox server. */ + accesstoken?: string; + /** + * Sets the bearing angle of the map in degrees counter-clockwise from North (map.bearing). + * @default 0 + */ + bearing?: number; + bounds?: { + /** Sets the maximum longitude of the map (in degrees East) if `west`, `south` and `north` are declared. */ + east?: number; + /** Sets the maximum latitude of the map (in degrees North) if `east`, `west` and `south` are declared. */ + north?: number; + /** Sets the minimum latitude of the map (in degrees North) if `east`, `west` and `north` are declared. */ + south?: number; + /** Sets the minimum longitude of the map (in degrees East) if `east`, `south` and `north` are declared. */ + west?: number; + }; + center?: { + /** + * Sets the latitude of the center of the map (in degrees North). + * @default 0 + */ + lat?: number; + /** + * Sets the longitude of the center of the map (in degrees East). + * @default 0 + */ + lon?: number; + }; + domain?: Domain; + layers?: Array<{ + /** Determines if the layer will be inserted before the layer with the specified ID. If omitted or set to '', the layer will be inserted above every existing layer. */ + below?: string; + circle?: { + /** + * Sets the circle radius (map.layer.paint.circle-radius). Has an effect only when `type` is set to *circle*. + * @default 15 + */ + radius?: number; + }; + /** + * Sets the primary layer color. If `type` is *circle*, color corresponds to the circle color (map.layer.paint.circle-color) If `type` is *line*, color corresponds to the line color (map.layer.paint.line-color) If `type` is *fill*, color corresponds to the fill color (map.layer.paint.fill-color) If `type` is *symbol*, color corresponds to the icon color (map.layer.paint.icon-color) + * @default '#444' + */ + color?: Color; + /** Sets the coordinates array contains [longitude, latitude] pairs for the image corners listed in clockwise order: top left, top right, bottom right, bottom left. Only has an effect for *image* `sourcetype`. */ + coordinates?: any; + fill?: ColorBar; + line?: { + /** Sets the length of dashes and gaps (map.layer.paint.line-dasharray). Has an effect only when `type` is set to *line*. */ + dash?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the line width (map.layer.paint.line-width). Has an effect only when `type` is set to *line*. + * @default 2 + */ + width?: number; + }; + /** + * Sets the maximum zoom level (map.layer.maxzoom). At zoom levels equal to or greater than the maxzoom, the layer will be hidden. + * @default 24 + * Range: [0, 24] + */ + maxzoom?: number; + /** + * Sets the minimum zoom level (map.layer.minzoom). At zoom levels less than the minzoom, the layer will be hidden. + * @default 0 + * Range: [0, 24] + */ + minzoom?: number; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** + * Sets the opacity of the layer. If `type` is *circle*, opacity corresponds to the circle opacity (map.layer.paint.circle-opacity) If `type` is *line*, opacity corresponds to the line opacity (map.layer.paint.line-opacity) If `type` is *fill*, opacity corresponds to the fill opacity (map.layer.paint.fill-opacity) If `type` is *symbol*, opacity corresponds to the icon/text opacity (map.layer.paint.text-opacity) + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** Sets the source data for this layer (map.layer.source). When `sourcetype` is set to *geojson*, `source` can be a URL to a GeoJSON or a GeoJSON object. When `sourcetype` is set to *vector* or *raster*, `source` can be a URL or an array of tile URLs. When `sourcetype` is set to *image*, `source` can be a URL to an image. */ + source?: any; + /** Sets the attribution for this source. */ + sourceattribution?: string; + /** Specifies the layer to use from a vector tile source (map.layer.source-layer). Required for *vector* source type that supports multiple layers. */ + sourcelayer?: string; + /** + * Sets the source type for this layer, that is the type of the layer data. + * @default 'geojson' + */ + sourcetype?: 'geojson' | 'vector' | 'raster' | 'image'; + symbol?: { + /** + * Sets the symbol icon image (map.layer.layout.icon-image). Full list: https://www.mapbox.com/maki-icons/ + * @default 'marker' + */ + icon?: string; + /** + * Sets the symbol icon size (map.layer.layout.icon-size). Has an effect only when `type` is set to *symbol*. + * @default 10 + */ + iconsize?: number; + /** + * Sets the symbol and/or text placement (map.layer.layout.symbol-placement). If `placement` is *point*, the label is placed where the geometry is located If `placement` is *line*, the label is placed along the line of the geometry If `placement` is *line-center*, the label is placed on the center of the geometry + * @default 'point' + */ + placement?: 'point' | 'line' | 'line-center'; + /** Sets the symbol text (map.layer.layout.text-field). */ + text?: string; + /** Sets the icon text font (color=map.layer.paint.text-color, size=map.layer.layout.text-size). Has an effect only when `type` is set to *symbol*. */ + textfont?: Font; + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; + }; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** + * Sets the layer type, that is the how the layer data set in `source` will be rendered With `sourcetype` set to *geojson*, the following values are allowed: *circle*, *line*, *fill* and *symbol*. but note that *line* and *fill* are not compatible with Point GeoJSON geometries. With `sourcetype` set to *vector*, the following values are allowed: *circle*, *line*, *fill* and *symbol*. With `sourcetype` set to *raster* or *image*, only the *raster* value is allowed. + * @default 'circle' + */ + type?: 'circle' | 'line' | 'fill' | 'symbol' | 'raster'; + /** + * Determines whether this layer is displayed + * @default true + */ + visible?: boolean; + }>; + /** + * Sets the pitch angle of the map (in degrees, where *0* means perpendicular to the surface of the map) (map.pitch). + * @default 0 + */ + pitch?: number; + /** + * Defines the map layers that are rendered by default below the trace layers defined in `data`, which are themselves by default rendered below the layers defined in `layout.map.layers`. These layers can be defined either explicitly as a Map Style object which can contain multiple layer definitions that load data from any public or private Tile Map Service (TMS or XYZ) or Web Map Service (WMS) or implicitly by using one of the built-in style objects which use WMSes or by using a custom style URL Map Style objects are of the form described in the MapLibre GL JS documentation available at https://maplibre.org/maplibre-style-spec/ The built-in plotly.js styles objects are: basic, carto-darkmatter, carto-darkmatter-nolabels, carto-positron, carto-positron-nolabels, carto-voyager, carto-voyager-nolabels, dark, light, open-street-map, outdoors, satellite, satellite-streets, streets, white-bg. + * @default 'basic' + */ + style?: any; + /** Controls persistence of user-driven changes in the view: `center`, `zoom`, `bearing`, `pitch`. Defaults to `layout.uirevision`. */ + uirevision?: any; + /** + * Sets the zoom level of the map (map.zoom). + * @default 1 + */ + zoom?: number; +} + +export interface PolarLayout { + angularaxis?: { + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ + autotypenumbers?: 'convert types' | 'strict'; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | Datum[][] | TypedArray; + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. + * @default 'trace' + */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ + color?: Color; + /** + * Sets the direction corresponding to positive angles. + * @default 'counterclockwise' + */ + direction?: 'counterclockwise' | 'clockwise'; + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ + dtick?: any; + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** + * Sets the color of the grid lines. + * @default '#eee' + */ + gridcolor?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + griddash?: Dash; + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ + labelalias?: any; + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ + layer?: 'above traces' | 'below traces'; + /** + * Sets the axis line color. + * @default '#444' + */ + linecolor?: Color; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + linewidth?: number; + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ + minexponent?: number; + /** + * Determines how minor log labels are displayed. If *small digits*, small digits i.e. 2 or 5 are displayed. If *complete*, complete digits are displayed. If *none*, no labels are displayed. + * @default 'small digits' + */ + minorloglabels?: 'small digits' | 'complete' | 'none'; + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ + nticks?: number; + /** + * Set the angular period. Has an effect only when `angularaxis.type` is *category*. + * Minimum: 0 + */ + period?: number; + /** Sets that start position (in degrees) of the angular axis By default, polar subplots with `direction` set to *counterclockwise* get a `rotation` of *0* which corresponds to due East (like what mathematicians prefer). In turn, polar with `direction` set to *clockwise* get a rotation of *90* which corresponds to due North (like on a compass), */ + rotation?: number | 'auto'; + /** + * If "true", even 4-digit integers are separated + * @default false + */ + separatethousands?: boolean; + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ + showgrid?: boolean; + /** + * Determines whether or not a line bounding this axis is drawn. + * @default true + */ + showline?: boolean; + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ + showticklabels?: boolean; + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * Sets the format unit of the formatted *theta* values. Has an effect only when `angularaxis.type` is *linear*. + * @default 'degrees' + */ + thetaunit?: 'radians' | 'degrees'; + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ + tick0?: any; + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ + tickangle?: number | 'auto'; + /** + * Sets the tick color. + * @default '#444' + */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ + ticklabelstep?: number; + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | Datum[][] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ + tickwidth?: number; + /** + * Sets the angular axis type. If *linear*, set `thetaunit` to determine the unit in which axis value are shown. If *category, use `period` to set the number of integer coordinates around polar axis. + * @default '-' + */ + type?: '-' | 'linear' | 'category'; + /** Controls persistence of user-driven changes in axis `rotation`. Defaults to `polar.uirevision`. */ + uirevision?: any; + /** + * A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false + * @default true + */ + visible?: boolean; + }; + /** + * Set the background color of the subplot + * @default '#fff' + */ + bgcolor?: Color; + domain?: Domain; + /** + * Determines if the radial axis grid lines and angular axis line are drawn as *circular* sectors or as *linear* (polygon) sectors. Has an effect only when the angular axis has `type` *category*. Note that `radialaxis.angle` is snapped to the angle of the closest vertex when `gridshape` is *circular* (so that radial axis scale is the same as the data scale). + * @default 'circular' + */ + gridshape?: 'circular' | 'linear'; + /** + * Sets the fraction of the radius to cut out of the polar subplot. + * @default 0 + * Range: [0, 1] + */ + hole?: number; + radialaxis?: { + /** Sets the angle (in degrees) from which the radial axis is drawn. Note that by default, radial axis line on the theta=0 line corresponds to a line pointing right (like what mathematicians prefer). Defaults to the first `polar.sector` angle. */ + angle?: number | 'auto'; + /** + * Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. + * @default true + */ + autorange?: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; + autorangeoptions?: _internal.AutoRangeOptions; + /** + * When `tickangle` is set to *auto*, it will be set to the first angle in this array that is large enough to prevent label overlap. + * @default [0,30,90] + */ + autotickangles?: any[]; + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ + autotypenumbers?: 'convert types' | 'strict'; + /** + * Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` + * @default 'gregorian' + */ + calendar?: Calendar; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | Datum[][] | TypedArray; + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. + * @default 'trace' + */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ + color?: Color; + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ + dtick?: any; + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** + * Sets the color of the grid lines. + * @default '#eee' + */ + gridcolor?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + griddash?: Dash; + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ + labelalias?: any; + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ + layer?: 'above traces' | 'below traces'; + /** + * Sets the axis line color. + * @default '#444' + */ + linecolor?: Color; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + linewidth?: number; + /** + * Determines the maximum range of this axis. + * Setting this also sets: ^autorange = false + */ + maxallowed?: any; + /** + * Determines the minimum range of this axis. + * Setting this also sets: ^autorange = false + */ + minallowed?: any; + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ + minexponent?: number; + /** + * Determines how minor log labels are displayed. If *small digits*, small digits i.e. 2 or 5 are displayed. If *complete*, complete digits are displayed. If *none*, no labels are displayed. + * @default 'small digits' + */ + minorloglabels?: 'small digits' | 'complete' | 'none'; + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ + nticks?: number; + /** + * Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. + * Setting this also sets: autorange = false + */ + range?: [any, any]; + /** + * If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. If *normal*, the range is computed in relation to the extrema of the input data (same behavior as for cartesian axes). + * @default 'tozero' + */ + rangemode?: 'tozero' | 'nonnegative' | 'normal'; + /** + * If "true", even 4-digit integers are separated + * @default false + */ + separatethousands?: boolean; + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ + showgrid?: boolean; + /** + * Determines whether or not a line bounding this axis is drawn. + * @default true + */ + showline?: boolean; + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ + showticklabels?: boolean; + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * Determines on which side of radial axis line the tick and tick labels appear. + * @default 'clockwise' + */ + side?: 'clockwise' | 'counterclockwise'; + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ + tick0?: any; + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ + tickangle?: number | 'auto'; + /** + * Sets the tick color. + * @default '#444' + */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ + ticklabelstep?: number; + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | Datum[][] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ + tickwidth?: number; + title?: LegendGroupTitle; + /** + * Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. + * @default '-' + */ + type?: '-' | 'linear' | 'log' | 'date' | 'category'; + /** Controls persistence of user-driven changes in axis `range`, `autorange`, `angle`, and `title` if in `editable: true` configuration. Defaults to `polar.uirevision`. */ + uirevision?: any; + /** + * A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false + * @default true + */ + visible?: boolean; + }; + /** + * Sets angular span of this polar subplot with two angles (in degrees). Sector are assumed to be spanned in the counterclockwise direction with *0* corresponding to rightmost limit of the polar subplot. + * @default [0,360] + */ + sector?: [number, number]; + /** Controls persistence of user-driven changes in axis attributes, if not overridden in the individual axes. Defaults to `layout.uirevision`. */ + uirevision?: any; +} + +export interface Scene { + annotations?: Array<{ + /** + * Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. + * @default 'center' + */ + align?: 'left' | 'center' | 'right'; + /** Sets the color of the annotation arrow. */ + arrowcolor?: Color; + /** + * Sets the end annotation arrow head style. + * @default 1 + * Range: [0, 8] + */ + arrowhead?: number; + /** + * Sets the annotation arrow head position. + * @default 'end' + */ + arrowside?: 'end' | 'start' | 'none' | (string & {}); + /** + * Sets the size of the end annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. + * @default 1 + * Minimum: 0.3 + */ + arrowsize?: number; + /** + * Sets the width (in px) of annotation arrow line. + * Minimum: 0.1 + */ + arrowwidth?: number; + /** Sets the x component of the arrow tail about the arrow head (in pixels). */ + ax?: number; + /** Sets the y component of the arrow tail about the arrow head (in pixels). */ + ay?: number; + /** + * Sets the background color of the annotation. + * @default 'rgba(0,0,0,0)' + */ + bgcolor?: Color; + /** + * Sets the color of the border enclosing the annotation `text`. + * @default 'rgba(0,0,0,0)' + */ + bordercolor?: Color; + /** + * Sets the padding (in px) between the `text` and the enclosing border. + * @default 1 + * Minimum: 0 + */ + borderpad?: number; + /** + * Sets the width (in px) of the border enclosing the annotation `text`. + * @default 1 + * Minimum: 0 + */ + borderwidth?: number; + /** Determines whether the annotation text box captures mouse move and click events, or allows those events to pass through to data points in the plot that may be behind the annotation. By default `captureevents` is *false* unless `hovertext` is provided. If you use the event `plotly_clickannotation` without `hovertext` you must explicitly enable `captureevents`. */ + captureevents?: boolean; + /** Sets the annotation text font. */ + font?: Font; + /** + * Sets an explicit height for the text box. null (default) lets the text set the box height. Taller text will be clipped. + * Minimum: 1 + */ + height?: number; + hoverlabel?: { + /** Sets the background color of the hover label. By default uses the annotation's `bgcolor` made opaque, or white if it was transparent. */ + bgcolor?: Color; + /** Sets the border color of the hover label. By default uses either dark grey or white, for maximum contrast with `hoverlabel.bgcolor`. */ + bordercolor?: Color; + /** Sets the hover label text font. By default uses the global hover font and size, with color from `hoverlabel.bordercolor`. */ + font?: Font; + }; + /** Sets text to appear when hovering over this annotation. If omitted or blank, no hover label will appear. */ + hovertext?: string; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** + * Sets the opacity of the annotation (text + arrow). + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Determines whether or not the annotation is drawn with an arrow. If *true*, `text` is placed near the arrow's tail. If *false*, `text` lines up with the `x` and `y` provided. + * @default true + */ + showarrow?: boolean; + /** + * Sets a distance, in pixels, to move the end arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. + * @default 0 + * Minimum: 0 + */ + standoff?: number; + /** + * Sets the start annotation arrow head style. + * @default 1 + * Range: [0, 8] + */ + startarrowhead?: number; + /** + * Sets the size of the start annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. + * @default 1 + * Minimum: 0.3 + */ + startarrowsize?: number; + /** + * Sets a distance, in pixels, to move the start arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. + * @default 0 + * Minimum: 0 + */ + startstandoff?: number; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Sets the text associated with this annotation. Plotly uses a subset of HTML tags to do things like newline (`
`), bold (``), italics (``), hyperlinks (``). Tags ``, ``, ``, ``, ``, and `` are also supported. */ + text?: string; + /** + * Sets the angle at which the `text` is drawn with respect to the horizontal. + * @default 0 + */ + textangle?: number | 'auto'; + /** + * Sets the vertical alignment of the `text` within the box. Has an effect only if an explicit height is set to override the text height. + * @default 'middle' + */ + valign?: 'top' | 'middle' | 'bottom'; + /** + * Determines whether or not this annotation is visible. + * @default true + */ + visible?: boolean; + /** + * Sets an explicit width for the text box. null (default) lets the text set the box width. Wider text will be clipped. There is no automatic wrapping; use
to start a new line. + * Minimum: 1 + */ + width?: number; + /** Sets the annotation's x position. */ + x?: any; + /** + * Sets the text box's horizontal position anchor This anchor binds the `x` position to the *left*, *center* or *right* of the annotation. For example, if `x` is set to 1, `xref` to *paper* and `xanchor` to *right* then the right-most portion of the annotation lines up with the right-most edge of the plotting area. If *auto*, the anchor is equivalent to *center* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. + * @default 'auto' + */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** + * Shifts the position of the whole annotation and arrow to the right (positive) or left (negative) by this many pixels. + * @default 0 + */ + xshift?: number; + /** Sets the annotation's y position. */ + y?: any; + /** + * Sets the text box's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the annotation. For example, if `y` is set to 1, `yref` to *paper* and `yanchor` to *top* then the top-most portion of the annotation lines up with the top-most edge of the plotting area. If *auto*, the anchor is equivalent to *middle* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. + * @default 'auto' + */ + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; + /** + * Shifts the position of the whole annotation and arrow up (positive) or down (negative) by this many pixels. + * @default 0 + */ + yshift?: number; + /** Sets the annotation's z position. */ + z?: any; + }>; + /** + * If *cube*, this scene's axes are drawn as a cube, regardless of the axes' ranges. If *data*, this scene's axes are drawn in proportion with the axes' ranges. If *manual*, this scene's axes are drawn in proportion with the input of *aspectratio* (the default behavior if *aspectratio* is provided). If *auto*, this scene's axes are drawn using the results of *data* except when one axis is more than four times the size of the two others, where in that case the results of *cube* are used. + * @default 'auto' + */ + aspectmode?: 'auto' | 'cube' | 'data' | 'manual'; + /** + * Sets this scene's axis aspectratio. + * Setting this also sets: aspectmode = "manual", role = "object" + */ + aspectratio?: { + /** + * Minimum: 0 + * Setting this also sets: ^aspectmode = "manual" + */ + x?: number; + /** + * Minimum: 0 + * Setting this also sets: ^aspectmode = "manual" + */ + y?: number; + /** + * Minimum: 0 + * Setting this also sets: ^aspectmode = "manual" + */ + z?: number; + }; + /** + * @default 'rgba(0,0,0,0)' + */ + bgcolor?: Color; + camera?: { + /** Sets the (x,y,z) components of the 'center' camera vector This vector determines the translation (x,y,z) space about the center of this scene. By default, there is no such translation. */ + center?: { + /** + * @default 0 + */ + x?: number; + /** + * @default 0 + */ + y?: number; + /** + * @default 0 + */ + z?: number; + }; + /** Sets the (x,y,z) components of the 'eye' camera vector. This vector determines the view point about the origin of this scene. */ + eye?: { + /** + * @default 1.25 + */ + x?: number; + /** + * @default 1.25 + */ + y?: number; + /** + * @default 1.25 + */ + z?: number; + }; + projection?: { + /** + * Sets the projection type. The projection type could be either *perspective* or *orthographic*. The default is *perspective*. + * @default 'perspective' + */ + type?: 'perspective' | 'orthographic'; + }; + /** Sets the (x,y,z) components of the 'up' camera vector. This vector determines the up direction of this scene with respect to the page. The default is *{x: 0, y: 0, z: 1}* which means that the z axis points up. */ + up?: { + /** + * @default 0 + */ + x?: number; + /** + * @default 0 + */ + y?: number; + /** + * @default 1 + */ + z?: number; + }; + }; + domain?: Domain; + /** Determines the mode of drag interactions for this scene. */ + dragmode?: 'orbit' | 'turntable' | 'zoom' | 'pan' | false; + /** + * Determines the mode of hover interactions for this scene. + * @default 'closest' + */ + hovermode?: 'closest' | false; + /** Controls persistence of user-driven changes in camera attributes. Defaults to `layout.uirevision`. */ + uirevision?: any; + xaxis?: { + /** + * Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. + * @default true + */ + autorange?: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; + autorangeoptions?: _internal.AutoRangeOptions; + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ + autotypenumbers?: 'convert types' | 'strict'; + /** + * Sets the background color of this axis' wall. + * @default 'rgba(204, 204, 204, 0.5)' + */ + backgroundcolor?: Color; + /** + * Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` + * @default 'gregorian' + */ + calendar?: Calendar; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | Datum[][] | TypedArray; + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. + * @default 'trace' + */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ + color?: Color; + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ + dtick?: any; + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** + * Sets the color of the grid lines. + * @default 'rgb(204, 204, 204)' + */ + gridcolor?: Color; + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ + labelalias?: any; + /** + * Sets the axis line color. + * @default '#444' + */ + linecolor?: Color; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + linewidth?: number; + /** + * Determines the maximum range of this axis. + * Setting this also sets: ^autorange = false + */ + maxallowed?: any; + /** + * Determines the minimum range of this axis. + * Setting this also sets: ^autorange = false + */ + minallowed?: any; + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ + minexponent?: number; + /** + * Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. + * @default false + */ + mirror?: true | 'ticks' | false | 'all' | 'allticks'; + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ + nticks?: number; + /** + * Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. + * Setting this also sets: autorange = false + */ + range?: [any, any]; + /** + * If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. + * @default 'normal' + */ + rangemode?: 'normal' | 'tozero' | 'nonnegative'; + /** + * If "true", even 4-digit integers are separated + * @default false + */ + separatethousands?: boolean; + /** + * Sets whether or not this axis is labeled + * @default true + */ + showaxeslabels?: boolean; + /** + * Sets whether or not this axis' wall has a background color. + * @default false + */ + showbackground?: boolean; + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** + * Determines whether or not a line bounding this axis is drawn. + * @default false + */ + showline?: boolean; + /** + * Sets whether or not spikes starting from data points to this axis' wall are shown on hover. + * @default true + */ + showspikes?: boolean; + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ + showticklabels?: boolean; + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * Sets the color of the spikes. + * @default '#444' + */ + spikecolor?: Color; + /** + * Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover. + * @default true + */ + spikesides?: boolean; + /** + * Sets the thickness (in px) of the spikes. + * @default 2 + * Minimum: 0 + */ + spikethickness?: number; + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ + tick0?: any; + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ + tickangle?: number | 'auto'; + /** + * Sets the tick color. + * @default '#444' + */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | Datum[][] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ + tickwidth?: number; + title?: LegendGroupTitle; + /** + * Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. + * @default '-' + */ + type?: '-' | 'linear' | 'log' | 'date' | 'category'; + /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + visible?: boolean; + /** Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines. */ + zeroline?: boolean; + /** + * Sets the line color of the zero line. + * @default '#444' + */ + zerolinecolor?: Color; + /** + * Sets the width (in px) of the zero line. + * @default 1 + */ + zerolinewidth?: number; + }; + yaxis?: { + /** + * Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. + * @default true + */ + autorange?: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; + autorangeoptions?: _internal.AutoRangeOptions; + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ + autotypenumbers?: 'convert types' | 'strict'; + /** + * Sets the background color of this axis' wall. + * @default 'rgba(204, 204, 204, 0.5)' + */ + backgroundcolor?: Color; + /** + * Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` + * @default 'gregorian' + */ + calendar?: Calendar; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | Datum[][] | TypedArray; + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. + * @default 'trace' + */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ + color?: Color; + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ + dtick?: any; + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** + * Sets the color of the grid lines. + * @default 'rgb(204, 204, 204)' + */ + gridcolor?: Color; + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ + labelalias?: any; + /** + * Sets the axis line color. + * @default '#444' + */ + linecolor?: Color; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + linewidth?: number; + /** + * Determines the maximum range of this axis. + * Setting this also sets: ^autorange = false + */ + maxallowed?: any; + /** + * Determines the minimum range of this axis. + * Setting this also sets: ^autorange = false + */ + minallowed?: any; + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ + minexponent?: number; + /** + * Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. + * @default false + */ + mirror?: true | 'ticks' | false | 'all' | 'allticks'; + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ + nticks?: number; + /** + * Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. + * Setting this also sets: autorange = false + */ + range?: [any, any]; + /** + * If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. + * @default 'normal' + */ + rangemode?: 'normal' | 'tozero' | 'nonnegative'; + /** + * If "true", even 4-digit integers are separated + * @default false + */ + separatethousands?: boolean; + /** + * Sets whether or not this axis is labeled + * @default true + */ + showaxeslabels?: boolean; + /** + * Sets whether or not this axis' wall has a background color. + * @default false + */ + showbackground?: boolean; + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** + * Determines whether or not a line bounding this axis is drawn. + * @default false + */ + showline?: boolean; + /** + * Sets whether or not spikes starting from data points to this axis' wall are shown on hover. + * @default true + */ + showspikes?: boolean; + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ + showticklabels?: boolean; + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * Sets the color of the spikes. + * @default '#444' + */ + spikecolor?: Color; + /** + * Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover. + * @default true + */ + spikesides?: boolean; + /** + * Sets the thickness (in px) of the spikes. + * @default 2 + * Minimum: 0 + */ + spikethickness?: number; + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ + tick0?: any; + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ + tickangle?: number | 'auto'; + /** + * Sets the tick color. + * @default '#444' + */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | Datum[][] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ + tickwidth?: number; + title?: LegendGroupTitle; + /** + * Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. + * @default '-' + */ + type?: '-' | 'linear' | 'log' | 'date' | 'category'; + /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + visible?: boolean; + /** Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines. */ + zeroline?: boolean; + /** + * Sets the line color of the zero line. + * @default '#444' + */ + zerolinecolor?: Color; + /** + * Sets the width (in px) of the zero line. + * @default 1 + */ + zerolinewidth?: number; + }; + zaxis?: { + /** + * Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. + * @default true + */ + autorange?: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; + autorangeoptions?: _internal.AutoRangeOptions; + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ + autotypenumbers?: 'convert types' | 'strict'; + /** + * Sets the background color of this axis' wall. + * @default 'rgba(204, 204, 204, 0.5)' + */ + backgroundcolor?: Color; + /** + * Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` + * @default 'gregorian' + */ + calendar?: Calendar; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | Datum[][] | TypedArray; + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. + * @default 'trace' + */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ + color?: Color; + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ + dtick?: any; + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** + * Sets the color of the grid lines. + * @default 'rgb(204, 204, 204)' + */ + gridcolor?: Color; + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ + labelalias?: any; + /** + * Sets the axis line color. + * @default '#444' + */ + linecolor?: Color; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + linewidth?: number; + /** + * Determines the maximum range of this axis. + * Setting this also sets: ^autorange = false + */ + maxallowed?: any; + /** + * Determines the minimum range of this axis. + * Setting this also sets: ^autorange = false + */ + minallowed?: any; + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ + minexponent?: number; + /** + * Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. + * @default false + */ + mirror?: true | 'ticks' | false | 'all' | 'allticks'; + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ + nticks?: number; + /** + * Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. + * Setting this also sets: autorange = false + */ + range?: [any, any]; + /** + * If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. + * @default 'normal' + */ + rangemode?: 'normal' | 'tozero' | 'nonnegative'; + /** + * If "true", even 4-digit integers are separated + * @default false + */ + separatethousands?: boolean; + /** + * Sets whether or not this axis is labeled + * @default true + */ + showaxeslabels?: boolean; + /** + * Sets whether or not this axis' wall has a background color. + * @default false + */ + showbackground?: boolean; + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** + * Determines whether or not a line bounding this axis is drawn. + * @default false + */ + showline?: boolean; + /** + * Sets whether or not spikes starting from data points to this axis' wall are shown on hover. + * @default true + */ + showspikes?: boolean; + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ + showticklabels?: boolean; + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * Sets the color of the spikes. + * @default '#444' + */ + spikecolor?: Color; + /** + * Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover. + * @default true + */ + spikesides?: boolean; + /** + * Sets the thickness (in px) of the spikes. + * @default 2 + * Minimum: 0 + */ + spikethickness?: number; + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ + tick0?: any; + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ + tickangle?: number | 'auto'; + /** + * Sets the tick color. + * @default '#444' + */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | Datum[][] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ + tickwidth?: number; + title?: LegendGroupTitle; + /** + * Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. + * @default '-' + */ + type?: '-' | 'linear' | 'log' | 'date' | 'category'; + /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + visible?: boolean; + /** Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines. */ + zeroline?: boolean; + /** + * Sets the line color of the zero line. + * @default '#444' + */ + zerolinecolor?: Color; + /** + * Sets the width (in px) of the zero line. + * @default 1 + */ + zerolinewidth?: number; + }; +} + +export interface SmithLayout { + /** + * Set the background color of the subplot + * @default '#fff' + */ + bgcolor?: Color; + domain?: Domain; + imaginaryaxis?: { + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ + color?: Color; + /** + * Sets the color of the grid lines. + * @default '#eee' + */ + gridcolor?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + griddash?: Dash; + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ + labelalias?: any; + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ + layer?: 'above traces' | 'below traces'; + /** + * Sets the axis line color. + * @default '#444' + */ + linecolor?: Color; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + linewidth?: number; + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ + showgrid?: boolean; + /** + * Determines whether or not a line bounding this axis is drawn. + * @default true + */ + showline?: boolean; + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ + showticklabels?: boolean; + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * Sets the tick color. + * @default '#444' + */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ + ticklen?: number; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the values at which ticks on this axis appear. Defaults to `realaxis.tickvals` plus the same as negatives and zero. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the tick width (in px). + * @default 2 + * Minimum: 0 + */ + tickwidth?: number; + /** + * A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false + * @default true + */ + visible?: boolean; + }; + realaxis?: { + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ + color?: Color; + /** + * Sets the color of the grid lines. + * @default '#eee' + */ + gridcolor?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + griddash?: Dash; + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ + labelalias?: any; + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ + layer?: 'above traces' | 'below traces'; + /** + * Sets the axis line color. + * @default '#444' + */ + linecolor?: Color; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + linewidth?: number; + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ + showgrid?: boolean; + /** + * Determines whether or not a line bounding this axis is drawn. + * @default true + */ + showline?: boolean; + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ + showticklabels?: boolean; + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * Determines on which side of real axis line the tick and tick labels appear. + * @default 'top' + */ + side?: 'top' | 'bottom'; + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 90 + */ + tickangle?: number | 'auto'; + /** + * Sets the tick color. + * @default '#444' + */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ + ticklen?: number; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *top* (*bottom*), this axis' are drawn above (below) the axis line. */ + ticks?: 'top' | 'bottom' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** + * Sets the values at which ticks on this axis appear. + * @default [0.2,0.5,1,2,5] + */ + tickvals?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the tick width (in px). + * @default 2 + * Minimum: 0 + */ + tickwidth?: number; + /** + * A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false + * @default true + */ + visible?: boolean; + }; +} + +export interface TernaryLayout { + aaxis?: { + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ + color?: Color; + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ + dtick?: any; + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** + * Sets the color of the grid lines. + * @default '#eee' + */ + gridcolor?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + griddash?: Dash; + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ + labelalias?: any; + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ + layer?: 'above traces' | 'below traces'; + /** + * Sets the axis line color. + * @default '#444' + */ + linecolor?: Color; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + linewidth?: number; + /** + * The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero. + * @default 0 + * Minimum: 0 + */ + min?: number; + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ + minexponent?: number; + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 6 + * Minimum: 1 + */ + nticks?: number; + /** + * If "true", even 4-digit integers are separated + * @default false + */ + separatethousands?: boolean; + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ + showgrid?: boolean; + /** + * Determines whether or not a line bounding this axis is drawn. + * @default true + */ + showline?: boolean; + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ + showticklabels?: boolean; + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ + tick0?: any; + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ + tickangle?: number | 'auto'; + /** + * Sets the tick color. + * @default '#444' + */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ + ticklabelstep?: number; + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | Datum[][] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ + tickwidth?: number; + title?: LegendGroupTitle; + /** Controls persistence of user-driven changes in axis `min`, and `title` if in `editable: true` configuration. Defaults to `ternary.uirevision`. */ + uirevision?: any; + }; + baxis?: { + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ + color?: Color; + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ + dtick?: any; + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** + * Sets the color of the grid lines. + * @default '#eee' + */ + gridcolor?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + griddash?: Dash; + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ + labelalias?: any; + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ + layer?: 'above traces' | 'below traces'; + /** + * Sets the axis line color. + * @default '#444' + */ + linecolor?: Color; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + linewidth?: number; + /** + * The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero. + * @default 0 + * Minimum: 0 + */ + min?: number; + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ + minexponent?: number; + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 6 + * Minimum: 1 + */ + nticks?: number; + /** + * If "true", even 4-digit integers are separated + * @default false + */ + separatethousands?: boolean; + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ + showgrid?: boolean; + /** + * Determines whether or not a line bounding this axis is drawn. + * @default true + */ + showline?: boolean; + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ + showticklabels?: boolean; + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ + tick0?: any; + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ + tickangle?: number | 'auto'; + /** + * Sets the tick color. + * @default '#444' + */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ + ticklabelstep?: number; + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | Datum[][] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ + tickwidth?: number; + title?: LegendGroupTitle; + /** Controls persistence of user-driven changes in axis `min`, and `title` if in `editable: true` configuration. Defaults to `ternary.uirevision`. */ + uirevision?: any; + }; + /** + * Set the background color of the subplot + * @default '#fff' + */ + bgcolor?: Color; + caxis?: { + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ + color?: Color; + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ + dtick?: any; + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** + * Sets the color of the grid lines. + * @default '#eee' + */ + gridcolor?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + griddash?: Dash; + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ + labelalias?: any; + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ + layer?: 'above traces' | 'below traces'; + /** + * Sets the axis line color. + * @default '#444' + */ + linecolor?: Color; + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ + linewidth?: number; + /** + * The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero. + * @default 0 + * Minimum: 0 + */ + min?: number; + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ + minexponent?: number; + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 6 + * Minimum: 1 + */ + nticks?: number; + /** + * If "true", even 4-digit integers are separated + * @default false + */ + separatethousands?: boolean; + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ + showgrid?: boolean; + /** + * Determines whether or not a line bounding this axis is drawn. + * @default true + */ + showline?: boolean; + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ + showticklabels?: boolean; + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ + tick0?: any; + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ + tickangle?: number | 'auto'; + /** + * Sets the tick color. + * @default '#444' + */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ + ticklabelstep?: number; + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | Datum[][] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ + tickwidth?: number; + title?: LegendGroupTitle; + /** Controls persistence of user-driven changes in axis `min`, and `title` if in `editable: true` configuration. Defaults to `ternary.uirevision`. */ + uirevision?: any; + }; + domain?: Domain; + /** + * The number each triplet should sum to, and the maximum range of each axis + * @default 1 + * Minimum: 0 + */ + sum?: number; + /** Controls persistence of user-driven changes in axis `min` and `title`, if not overridden in the individual axes. Defaults to `layout.uirevision`. */ + uirevision?: any; +} + +export interface Annotation { + /** + * Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. + * @default 'center' + */ + align?: 'left' | 'center' | 'right'; + /** Sets the color of the annotation arrow. */ + arrowcolor?: Color; + /** + * Sets the end annotation arrow head style. + * @default 1 + * Range: [0, 8] + */ + arrowhead?: number; + /** + * Sets the annotation arrow head position. + * @default 'end' + */ + arrowside?: 'end' | 'start' | 'none' | (string & {}); + /** + * Sets the size of the end annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. + * @default 1 + * Minimum: 0.3 + */ + arrowsize?: number; + /** + * Sets the width (in px) of annotation arrow line. + * Minimum: 0.1 + */ + arrowwidth?: number; + /** Sets the x component of the arrow tail about the arrow head. If `axref` is `pixel`, a positive (negative) component corresponds to an arrow pointing from right to left (left to right). If `axref` is not `pixel` and is exactly the same as `xref`, this is an absolute value on that axis, like `x`, specified in the same coordinates as `xref`. */ + ax?: any; + /** + * Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. In order for absolute positioning of the arrow to work, *axref* must be exactly the same as *xref*, otherwise *axref* will revert to *pixel* (explained next). For relative positioning, *axref* can be set to *pixel*, in which case the *ax* value is specified in pixels relative to *x*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point. + * @default 'pixel' + */ + axref?: 'pixel' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** Sets the y component of the arrow tail about the arrow head. If `ayref` is `pixel`, a positive (negative) component corresponds to an arrow pointing from bottom to top (top to bottom). If `ayref` is not `pixel` and is exactly the same as `yref`, this is an absolute value on that axis, like `y`, specified in the same coordinates as `yref`. */ + ay?: any; + /** + * Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. In order for absolute positioning of the arrow to work, *ayref* must be exactly the same as *yref*, otherwise *ayref* will revert to *pixel* (explained next). For relative positioning, *ayref* can be set to *pixel*, in which case the *ay* value is specified in pixels relative to *y*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point. + * @default 'pixel' + */ + ayref?: 'pixel' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** + * Sets the background color of the annotation. + * @default 'rgba(0,0,0,0)' + */ + bgcolor?: Color; + /** + * Sets the color of the border enclosing the annotation `text`. + * @default 'rgba(0,0,0,0)' + */ + bordercolor?: Color; + /** + * Sets the padding (in px) between the `text` and the enclosing border. + * @default 1 + * Minimum: 0 + */ + borderpad?: number; + /** + * Sets the width (in px) of the border enclosing the annotation `text`. + * @default 1 + * Minimum: 0 + */ + borderwidth?: number; + /** Determines whether the annotation text box captures mouse move and click events, or allows those events to pass through to data points in the plot that may be behind the annotation. By default `captureevents` is *false* unless `hovertext` is provided. If you use the event `plotly_clickannotation` without `hovertext` you must explicitly enable `captureevents`. */ + captureevents?: boolean; + /** + * Makes this annotation respond to clicks on the plot. If you click a data point that exactly matches the `x` and `y` values of this annotation, and it is hidden (visible: false), it will appear. In *onoff* mode, you must click the same point again to make it disappear, so if you click multiple points, you can show multiple annotations. In *onout* mode, a click anywhere else in the plot (on another data point or not) will hide this annotation. If you need to show/hide this annotation in response to different `x` or `y` values, you can set `xclick` and/or `yclick`. This is useful for example to label the side of a bar. To label markers though, `standoff` is preferred over `xclick` and `yclick`. + * @default false + */ + clicktoshow?: false | 'onoff' | 'onout'; + /** Sets the annotation text font. */ + font?: Font; + /** + * Sets an explicit height for the text box. null (default) lets the text set the box height. Taller text will be clipped. + * Minimum: 1 + */ + height?: number; + hoverlabel?: { + /** Sets the background color of the hover label. By default uses the annotation's `bgcolor` made opaque, or white if it was transparent. */ + bgcolor?: Color; + /** Sets the border color of the hover label. By default uses either dark grey or white, for maximum contrast with `hoverlabel.bgcolor`. */ + bordercolor?: Color; + /** Sets the hover label text font. By default uses the global hover font and size, with color from `hoverlabel.bordercolor`. */ + font?: Font; + }; + /** Sets text to appear when hovering over this annotation. If omitted or blank, no hover label will appear. */ + hovertext?: string; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** + * Sets the opacity of the annotation (text + arrow). + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Determines whether or not the annotation is drawn with an arrow. If *true*, `text` is placed near the arrow's tail. If *false*, `text` lines up with the `x` and `y` provided. + * @default true + */ + showarrow?: boolean; + /** + * Sets a distance, in pixels, to move the end arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. + * @default 0 + * Minimum: 0 + */ + standoff?: number; + /** + * Sets the start annotation arrow head style. + * @default 1 + * Range: [0, 8] + */ + startarrowhead?: number; + /** + * Sets the size of the start annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. + * @default 1 + * Minimum: 0.3 + */ + startarrowsize?: number; + /** + * Sets a distance, in pixels, to move the start arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. + * @default 0 + * Minimum: 0 + */ + startstandoff?: number; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Sets the text associated with this annotation. Plotly uses a subset of HTML tags to do things like newline (`
`), bold (``), italics (``), hyperlinks (``). Tags ``, ``, ``, ``, ``, and `` are also supported. */ + text?: string; + /** + * Sets the angle at which the `text` is drawn with respect to the horizontal. + * @default 0 + */ + textangle?: number | 'auto'; + /** + * Sets the vertical alignment of the `text` within the box. Has an effect only if an explicit height is set to override the text height. + * @default 'middle' + */ + valign?: 'top' | 'middle' | 'bottom'; + /** + * Determines whether or not this annotation is visible. + * @default true + */ + visible?: boolean; + /** + * Sets an explicit width for the text box. null (default) lets the text set the box width. Wider text will be clipped. There is no automatic wrapping; use
to start a new line. + * Minimum: 1 + */ + width?: number; + /** Sets the annotation's x position. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. */ + x?: any; + /** + * Sets the text box's horizontal position anchor This anchor binds the `x` position to the *left*, *center* or *right* of the annotation. For example, if `x` is set to 1, `xref` to *paper* and `xanchor` to *right* then the right-most portion of the annotation lines up with the right-most edge of the plotting area. If *auto*, the anchor is equivalent to *center* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. + * @default 'auto' + */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** Toggle this annotation when clicking a data point whose `x` value is `xclick` rather than the annotation's `x` value. */ + xclick?: any; + /** Sets the annotation's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. */ + xref?: 'paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** + * Shifts the position of the whole annotation and arrow to the right (positive) or left (negative) by this many pixels. + * @default 0 + */ + xshift?: number; + /** Sets the annotation's y position. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. */ + y?: any; + /** + * Sets the text box's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the annotation. For example, if `y` is set to 1, `yref` to *paper* and `yanchor` to *top* then the top-most portion of the annotation lines up with the top-most edge of the plotting area. If *auto*, the anchor is equivalent to *middle* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. + * @default 'auto' + */ + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; + /** Toggle this annotation when clicking a data point whose `y` value is `yclick` rather than the annotation's `y` value. */ + yclick?: any; + /** Sets the annotation's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. */ + yref?: 'paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** + * Shifts the position of the whole annotation and arrow up (positive) or down (negative) by this many pixels. + * @default 0 + */ + yshift?: number; +} + +export interface LayoutImage { + /** + * Specifies whether images are drawn below or above traces. When `xref` and `yref` are both set to `paper`, image is drawn below the entire plot area. + * @default 'above' + */ + layer?: 'below' | 'above'; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** + * Sets the opacity of the image. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Sets the image container size horizontally. The image will be sized based on the `position` value. When `xref` is set to `paper`, units are sized relative to the plot width. When `xref` ends with ` domain`, units are sized relative to the axis width. + * @default 0 + */ + sizex?: number; + /** + * Sets the image container size vertically. The image will be sized based on the `position` value. When `yref` is set to `paper`, units are sized relative to the plot height. When `yref` ends with ` domain`, units are sized relative to the axis height. + * @default 0 + */ + sizey?: number; + /** + * Specifies which dimension of the image to constrain. + * @default 'contain' + */ + sizing?: 'fill' | 'contain' | 'stretch'; + /** Specifies the URL of the image to be used. The URL must be accessible from the domain where the plot code is run, and can be either relative or absolute. */ + source?: string; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** + * Determines whether or not this image is visible. + * @default true + */ + visible?: boolean; + /** + * Sets the image's x position. When `xref` is set to `paper`, units are sized relative to the plot height. See `xref` for more info + * @default 0 + */ + x?: any; + /** + * Sets the anchor for the x position + * @default 'left' + */ + xanchor?: 'left' | 'center' | 'right'; + /** + * Sets the images's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. + * @default 'paper' + */ + xref?: 'paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** + * Sets the image's y position. When `yref` is set to `paper`, units are sized relative to the plot height. See `yref` for more info + * @default 0 + */ + y?: any; + /** + * Sets the anchor for the y position. + * @default 'top' + */ + yanchor?: 'top' | 'middle' | 'bottom'; + /** + * Sets the images's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. + * @default 'paper' + */ + yref?: 'paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; +} + +export interface LayoutSelection { + line?: { + /** Sets the line color. */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'dot' + */ + dash?: Dash; + /** + * Sets the line width (in px). + * @default 1 + * Minimum: 1 + */ + width?: number; + }; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** + * Sets the opacity of the selection. + * @default 0.7 + * Range: [0, 1] + */ + opacity?: number; + /** For `type` *path* - a valid SVG path similar to `shapes.path` in data coordinates. Allowed segments are: M, L and Z. */ + path?: string; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Specifies the selection type to be drawn. If *rect*, a rectangle is drawn linking (`x0`,`y0`), (`x1`,`y0`), (`x1`,`y1`) and (`x0`,`y1`). If *path*, draw a custom SVG path using `path`. */ + type?: 'rect' | 'path'; + /** Sets the selection's starting x position. */ + x0?: any; + /** Sets the selection's end x position. */ + x1?: any; + /** Sets the selection's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. */ + xref?: 'paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** Sets the selection's starting y position. */ + y0?: any; + /** Sets the selection's end y position. */ + y1?: any; + /** Sets the selection's x coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. */ + yref?: 'paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; +} + +export interface Shape { + /** + * Determines whether the shape could be activated for edit or not. Has no effect when the older editable shapes mode is enabled via `config.editable` or `config.edits.shapePosition`. + * @default false + */ + editable?: boolean; + /** + * Sets the color filling the shape's interior. Only applies to closed shapes. + * @default 'rgba(0,0,0,0)' + */ + fillcolor?: Color; + /** + * Determines which regions of complex paths constitute the interior. For more info please visit https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule + * @default 'evenodd' + */ + fillrule?: 'evenodd' | 'nonzero'; + label?: { + /** Sets the shape label text font. */ + font?: Font; + /** + * Sets padding (in px) between edge of label and edge of shape. + * @default 3 + * Minimum: 0 + */ + padding?: number; + /** Sets the text to display with shape. It is also used for legend item if `name` is not provided. */ + text?: string; + /** + * Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle *auto* is the same angle as the line. For all other shapes, angle *auto* is horizontal. + * @default 'auto' + */ + textangle?: number | 'auto'; + /** Sets the position of the label text relative to the shape. Supported values for rectangles, circles and paths are *top left*, *top center*, *top right*, *middle left*, *middle center*, *middle right*, *bottom left*, *bottom center*, and *bottom right*. Supported values for lines are *start*, *middle*, and *end*. Default: *middle center* for rectangles, circles, and paths; *middle* for lines. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | 'start' | 'middle' | 'end'; + /** Template string used for rendering the shape's label. Note that this will override `text`. Variables are inserted using %{variable}, for example "x0: %{x0}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{x0:$.2f}". See https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{x0|%m %b %Y}". See https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. A single multiplication or division operation may be applied to numeric variables, and combined with d3 number formatting, for example "Length in cm: %{x0*2.54}", "%{slope*60:.1f} meters per second." For log axes, variable values are given in log units. For date axes, x/y coordinate variables and center variables use datetimes, while all other variable values use values in ms. Finally, the template string has access to variables `x0`, `x1`, `y0`, `y1`, `slope`, `dx`, `dy`, `width`, `height`, `length`, `xcenter`, `ycenter`, `simpleXVariables` and `simpleYVariables`. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. */ + texttemplate?: string; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + /** + * Sets the label's horizontal position anchor This anchor binds the specified `textposition` to the *left*, *center* or *right* of the label text. For example, if `textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the shape. + * @default 'auto' + */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** Sets the label's vertical position anchor This anchor binds the specified `textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the shape. */ + yanchor?: 'top' | 'middle' | 'bottom'; + }; + /** + * Specifies whether shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*). + * @default 'above' + */ + layer?: 'below' | 'above' | 'between'; + /** + * Sets the reference to a legend to show this shape in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this shape. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this shape. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this shape. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** Sets the line color. */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ + width?: number; + }; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** + * Sets the opacity of the shape. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** For `type` *path* - a valid SVG path with the pixel values replaced by data values in `xsizemode`/`ysizemode` being *scaled* and taken unmodified as pixels relative to `xanchor` and `yanchor` in case of *pixel* size mode. There are a few restrictions / quirks only absolute instructions, not relative. So the allowed segments are: M, L, H, V, Q, C, T, S, and Z arcs (A) are not allowed because radius rx and ry are relative. In the future we could consider supporting relative commands, but we would have to decide on how to handle date and log axes. Note that even as is, Q and C Bezier paths that are smooth on linear axes may not be smooth on log, and vice versa. no chained "polybezier" commands - specify the segment type for each one. On category axes, values are numbers scaled to the serial numbers of categories because using the categories themselves there would be no way to describe fractional positions On data axes: because space and T are both normal components of path strings, we can't use either to separate date from time parts. Therefore we'll use underscore for this purpose: 2015-02-21_13:45:56.789 */ + path?: string; + /** + * Determines whether or not this shape is shown in the legend. + * @default false + */ + showlegend?: boolean; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Specifies the shape type to be drawn. If *line*, a line is drawn from (`x0`,`y0`) to (`x1`,`y1`) with respect to the axes' sizing mode. If *circle*, a circle is drawn from ((`x0`+`x1`)/2, (`y0`+`y1`)/2)) with radius (|(`x0`+`x1`)/2 - `x0`|, |(`y0`+`y1`)/2 -`y0`)|) with respect to the axes' sizing mode. If *rect*, a rectangle is drawn linking (`x0`,`y0`), (`x1`,`y0`), (`x1`,`y1`), (`x0`,`y1`), (`x0`,`y0`) with respect to the axes' sizing mode. If *path*, draw a custom SVG path using `path`. with respect to the axes' sizing mode. */ + type?: 'circle' | 'rect' | 'path' | 'line'; + /** + * Determines whether or not this shape is visible. If *legendonly*, the shape is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the shape's starting x position. See `type` and `xsizemode` for more info. */ + x0?: any; + /** + * Shifts `x0` away from the center of the category when `xref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. + * @default 0 + * Range: [-1, 1] + */ + x0shift?: number; + /** Sets the shape's end x position. See `type` and `xsizemode` for more info. */ + x1?: any; + /** + * Shifts `x1` away from the center of the category when `xref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. + * @default 0 + * Range: [-1, 1] + */ + x1shift?: number; + /** Only relevant in conjunction with `xsizemode` set to *pixel*. Specifies the anchor point on the x axis to which `x0`, `x1` and x coordinates within `path` are relative to. E.g. useful to attach a pixel sized shape to a certain data value. No effect when `xsizemode` not set to *pixel*. */ + xanchor?: any; + /** Sets the shape's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. If an array of axis IDs is provided, each `x` value will refer to the corresponding axis, e.g., ['x', 'x2'] for a rectangle, line, or circle means `x0` uses the `x` axis and `x1` uses the `x2` axis. Path shapes using an array should have one entry for each x coordinate in the string. */ + xref?: 'paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | ('paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/')[]; + /** + * Sets the shapes's sizing mode along the x axis. If set to *scaled*, `x0`, `x1` and x coordinates within `path` refer to data values on the x axis or a fraction of the plot area's width (`xref` set to *paper*). If set to *pixel*, `xanchor` specifies the x position in terms of data or plot fraction but `x0`, `x1` and x coordinates within `path` are pixels relative to `xanchor`. This way, the shape can have a fixed width while maintaining a position relative to data or plot fraction. Note: `xsizemode` *pixel* is not supported when `xref` is an array. + * @default 'scaled' + */ + xsizemode?: 'scaled' | 'pixel'; + /** Sets the shape's starting y position. See `type` and `ysizemode` for more info. */ + y0?: any; + /** + * Shifts `y0` away from the center of the category when `yref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. + * @default 0 + * Range: [-1, 1] + */ + y0shift?: number; + /** Sets the shape's end y position. See `type` and `ysizemode` for more info. */ + y1?: any; + /** + * Shifts `y1` away from the center of the category when `yref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. + * @default 0 + * Range: [-1, 1] + */ + y1shift?: number; + /** Only relevant in conjunction with `ysizemode` set to *pixel*. Specifies the anchor point on the y axis to which `y0`, `y1` and y coordinates within `path` are relative to. E.g. useful to attach a pixel sized shape to a certain data value. No effect when `ysizemode` not set to *pixel*. */ + yanchor?: any; + /** Sets the shape's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. If an array of axis IDs is provided, each `y` value will refer to the corresponding axis, e.g., ['y', 'y2'] for a rectangle, line, or circle means `y0` uses the `y` axis and `y1` uses the `y2` axis. Path shapes using an array should have one entry for each y coordinate in the string. */ + yref?: 'paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/' | ('paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/')[]; + /** + * Sets the shapes's sizing mode along the y axis. If set to *scaled*, `y0`, `y1` and y coordinates within `path` refer to data values on the y axis or a fraction of the plot area's height (`yref` set to *paper*). If set to *pixel*, `yanchor` specifies the y position in terms of data or plot fraction but `y0`, `y1` and y coordinates within `path` are pixels relative to `yanchor`. This way, the shape can have a fixed height while maintaining a position relative to data or plot fraction. Note: `ysizemode` *pixel* is not supported when `yref` is an array. + * @default 'scaled' + */ + ysizemode?: 'scaled' | 'pixel'; +} + +export interface Slider { + /** + * Determines which button (by index starting from 0) is considered active. + * @default 0 + * Minimum: 0 + */ + active?: number; + /** + * Sets the background color of the slider grip while dragging. + * @default '#dbdde0' + */ + activebgcolor?: Color; + /** + * Sets the background color of the slider. + * @default '#f8fafc' + */ + bgcolor?: Color; + /** + * Sets the color of the border enclosing the slider. + * @default '#bec8d9' + */ + bordercolor?: Color; + /** + * Sets the width (in px) of the border enclosing the slider. + * @default 1 + * Minimum: 0 + */ + borderwidth?: number; + currentvalue?: { + /** Sets the font of the current value label text. */ + font?: Font; + /** + * The amount of space, in pixels, between the current value label and the slider. + * @default 10 + */ + offset?: number; + /** When currentvalue.visible is true, this sets the prefix of the label. */ + prefix?: string; + /** When currentvalue.visible is true, this sets the suffix of the label. */ + suffix?: string; + /** + * Shows the currently-selected value above the slider. + * @default true + */ + visible?: boolean; + /** + * The alignment of the value readout relative to the length of the slider. + * @default 'left' + */ + xanchor?: 'left' | 'center' | 'right'; + }; + /** Sets the font of the slider step labels. */ + font?: Font; + /** + * Sets the length of the slider This measure excludes the padding of both ends. That is, the slider's length is this length minus the padding on both ends. + * @default 1 + * Minimum: 0 + */ + len?: number; + /** + * Determines whether this slider length is set in units of plot *fraction* or in *pixels. Use `len` to set the value. + * @default 'fraction' + */ + lenmode?: 'fraction' | 'pixels'; + /** + * Sets the length in pixels of minor step tick marks + * @default 4 + * Minimum: 0 + */ + minorticklen?: number; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Set the padding of the slider component along each side. */ + pad?: { + /** + * The amount of padding (in px) along the bottom of the component. + * @default 0 + */ + b?: number; + /** + * The amount of padding (in px) on the left side of the component. + * @default 0 + */ + l?: number; + /** + * The amount of padding (in px) on the right side of the component. + * @default 0 + */ + r?: number; + /** + * The amount of padding (in px) along the top of the component. + * @default 20 + */ + t?: number; + }; + steps?: Array<{ + /** Sets the arguments values to be passed to the Plotly method set in `method` on slide. */ + args?: any[]; + /** + * When true, the API method is executed. When false, all other behaviors are the same and command execution is skipped. This may be useful when hooking into, for example, the `plotly_sliderchange` method and executing the API command manually without losing the benefit of the slider automatically binding to the state of the plot through the specification of `method` and `args`. + * @default true + */ + execute?: boolean; + /** Sets the text label to appear on the slider */ + label?: string; + /** + * Sets the Plotly method to be called when the slider value is changed. If the `skip` method is used, the API slider will function as normal but will perform no API calls and will not bind automatically to state updates. This may be used to create a component interface and attach to slider events manually via JavaScript. + * @default 'restyle' + */ + method?: 'restyle' | 'relayout' | 'animate' | 'update' | 'skip'; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Sets the value of the slider step, used to refer to the step programatically. Defaults to the slider label if not provided. */ + value?: string; + /** + * Determines whether or not this step is included in the slider. + * @default true + */ + visible?: boolean; + }>; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** + * Sets the color of the border enclosing the slider. + * @default '#333' + */ + tickcolor?: Color; + /** + * Sets the length in pixels of step tick marks + * @default 7 + * Minimum: 0 + */ + ticklen?: number; + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ + tickwidth?: number; + transition?: { + /** + * Sets the duration of the slider transition + * @default 150 + * Minimum: 0 + */ + duration?: number; + /** + * Sets the easing function of the slider transition + * @default 'cubic-in-out' + */ + easing?: TransitionEasing; + }; + /** + * Determines whether or not the slider is visible. + * @default true + */ + visible?: boolean; + /** + * Sets the x position (in normalized coordinates) of the slider. + * @default 0 + * Range: [-2, 3] + */ + x?: number; + /** + * Sets the slider's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector. + * @default 'left' + */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** + * Sets the y position (in normalized coordinates) of the slider. + * @default 0 + * Range: [-2, 3] + */ + y?: number; + /** + * Sets the slider's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector. + * @default 'top' + */ + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; +} + +export interface UpdateMenu { + /** + * Determines which button (by index starting from 0) is considered active. + * @default 0 + * Minimum: -1 + */ + active?: number; + /** Sets the background color of the update menu buttons. */ + bgcolor?: Color; + /** + * Sets the color of the border enclosing the update menu. + * @default '#BEC8D9' + */ + bordercolor?: Color; + /** + * Sets the width (in px) of the border enclosing the update menu. + * @default 1 + * Minimum: 0 + */ + borderwidth?: number; + buttons?: Array<{ + /** Sets the arguments values to be passed to the Plotly method set in `method` on click. */ + args?: any[]; + /** Sets a 2nd set of `args`, these arguments values are passed to the Plotly method set in `method` when clicking this button while in the active state. Use this to create toggle buttons. */ + args2?: any[]; + /** + * When true, the API method is executed. When false, all other behaviors are the same and command execution is skipped. This may be useful when hooking into, for example, the `plotly_buttonclicked` method and executing the API command manually without losing the benefit of the updatemenu automatically binding to the state of the plot through the specification of `method` and `args`. + * @default true + */ + execute?: boolean; + /** Sets the text label to appear on the button. */ + label?: string; + /** + * Sets the Plotly method to be called on click. If the `skip` method is used, the API updatemenu will function as normal but will perform no API calls and will not bind automatically to state updates. This may be used to create a component interface and attach to updatemenu events manually via JavaScript. + * @default 'restyle' + */ + method?: 'restyle' | 'relayout' | 'animate' | 'update' | 'skip'; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Determines whether or not this button is visible. */ + visible?: boolean; + }>; + /** + * Determines the direction in which the buttons are laid out, whether in a dropdown menu or a row/column of buttons. For `left` and `up`, the buttons will still appear in left-to-right or top-to-bottom order respectively. + * @default 'down' + */ + direction?: 'left' | 'right' | 'up' | 'down'; + /** Sets the font of the update menu button text. */ + font?: Font; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Sets the padding around the buttons or dropdown menu. */ + pad?: { + /** + * The amount of padding (in px) along the bottom of the component. + * @default 0 + */ + b?: number; + /** + * The amount of padding (in px) on the left side of the component. + * @default 0 + */ + l?: number; + /** + * The amount of padding (in px) on the right side of the component. + * @default 0 + */ + r?: number; + /** + * The amount of padding (in px) along the top of the component. + * @default 0 + */ + t?: number; + }; + /** + * Highlights active dropdown item or active button if true. + * @default true + */ + showactive?: boolean; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** + * Determines whether the buttons are accessible via a dropdown menu or whether the buttons are stacked horizontally or vertically + * @default 'dropdown' + */ + type?: 'dropdown' | 'buttons'; + /** Determines whether or not the update menu is visible. */ + visible?: boolean; + /** + * Sets the x position (in normalized coordinates) of the update menu. + * @default -0.05 + * Range: [-2, 3] + */ + x?: number; + /** + * Sets the update menu's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector. + * @default 'right' + */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** + * Sets the y position (in normalized coordinates) of the update menu. + * @default 1 + * Range: [-2, 3] + */ + y?: number; + /** + * Sets the update menu's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector. + * @default 'top' + */ + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; +} + +// --------------------------------------------------------------------------- +// Layout +// --------------------------------------------------------------------------- + +export interface Layout { + activeselection?: { + /** + * Sets the color filling the active selection' interior. + * @default 'rgba(0,0,0,0)' + */ + fillcolor?: Color; + /** + * Sets the opacity of the active selection. + * @default 0.5 + * Range: [0, 1] + */ + opacity?: number; + }; + activeshape?: { + /** + * Sets the color filling the active shape' interior. + * @default 'rgb(255,0,255)' + */ + fillcolor?: Color; + /** + * Sets the opacity of the active shape. + * @default 0.5 + * Range: [0, 1] + */ + opacity?: number; + }; + annotations?: Annotation[]; + autosize?: boolean; + autotypenumbers?: 'convert types' | 'strict'; + calendar?: Calendar; + clickanywhere?: boolean; + clickmode?: 'event' | 'select' | 'none' | (string & {}); + coloraxis?: ColorAxis; + colorscale?: { + /** + * Sets the default diverging colorscale. Note that `autocolorscale` must be true for this attribute to work. + * @default [[0,"rgb(5,10,172)"],[0.35,"rgb(106,137,247)"],[0.5,"rgb(190,190,190)"],[0.6,"rgb(220,170,132)"],[0.7,"rgb(230,145,90)"],[1,"rgb(178,10,28)"]] + */ + diverging?: ColorScale; + /** + * Sets the default sequential colorscale for positive values. Note that `autocolorscale` must be true for this attribute to work. + * @default [[0,"rgb(220,220,220)"],[0.2,"rgb(245,195,157)"],[0.4,"rgb(245,160,105)"],[1,"rgb(178,10,28)"]] + */ + sequential?: ColorScale; + /** + * Sets the default sequential colorscale for negative values. Note that `autocolorscale` must be true for this attribute to work. + * @default [[0,"rgb(5,10,172)"],[0.35,"rgb(40,60,190)"],[0.5,"rgb(70,100,245)"],[0.6,"rgb(90,120,245)"],[0.7,"rgb(106,137,247)"],[1,"rgb(220,220,220)"]] + */ + sequentialminus?: ColorScale; + }; + colorway?: Color[]; + computed?: any; + datarevision?: any; + dragmode?: 'zoom' | 'pan' | 'select' | 'lasso' | 'drawclosedpath' | 'drawopenpath' | 'drawline' | 'drawrect' | 'drawcircle' | 'orbit' | 'turntable' | false; + editrevision?: any; + font?: Font; + geo?: GeoLayout; + grid?: { + /** + * The number of columns in the grid. If you provide a 2D `subplots` array, the length of its longest row is used as the default. If you give an `xaxes` array, its length is used as the default. But it's also possible to have a different length, if you want to leave a row at the end for non-cartesian subplots. + * Minimum: 1 + */ + columns?: number; + domain?: { + /** + * Sets the horizontal domain of this grid subplot (in plot fraction). The first and last cells end exactly at the domain edges, with no grout around the edges. + * @default [0,1] + */ + x?: [number, number]; + /** + * Sets the vertical domain of this grid subplot (in plot fraction). The first and last cells end exactly at the domain edges, with no grout around the edges. + * @default [0,1] + */ + y?: [number, number]; + }; + /** + * If no `subplots`, `xaxes`, or `yaxes` are given but we do have `rows` and `columns`, we can generate defaults using consecutive axis IDs, in two ways: *coupled* gives one x axis per column and one y axis per row. *independent* uses a new xy pair for each cell, left-to-right across each row then iterating rows according to `roworder`. + * @default 'coupled' + */ + pattern?: 'independent' | 'coupled'; + /** + * Is the first row the top or the bottom? Note that columns are always enumerated from left to right. + * @default 'top to bottom' + */ + roworder?: 'top to bottom' | 'bottom to top'; + /** + * The number of rows in the grid. If you provide a 2D `subplots` array or a `yaxes` array, its length is used as the default. But it's also possible to have a different length, if you want to leave a row at the end for non-cartesian subplots. + * Minimum: 1 + */ + rows?: number; + /** Used for freeform grids, where some axes may be shared across subplots but others are not. Each entry should be a cartesian subplot id, like *xy* or *x3y2*, or ** to leave that cell empty. You may reuse x axes within the same column, and y axes within the same row. Non-cartesian subplots and traces that support `domain` can place themselves in this grid separately using the `gridcell` attribute. */ + subplots?: any[]; + /** Used with `yaxes` when the x and y axes are shared across columns and rows. Each entry should be an x axis id like *x*, *x2*, etc., or ** to not put an x axis in that column. Entries other than ** must be unique. Ignored if `subplots` is present. If missing but `yaxes` is present, will generate consecutive IDs. */ + xaxes?: any[]; + /** + * Horizontal space between grid cells, expressed as a fraction of the total width available to one cell. Defaults to 0.1 for coupled-axes grids and 0.2 for independent grids. + * Range: [0, 1] + */ + xgap?: number; + /** + * Sets where the x axis labels and titles go. *bottom* means the very bottom of the grid. *bottom plot* is the lowest plot that each x axis is used in. *top* and *top plot* are similar. + * @default 'bottom plot' + */ + xside?: 'bottom' | 'bottom plot' | 'top plot' | 'top'; + /** Used with `yaxes` when the x and y axes are shared across columns and rows. Each entry should be an y axis id like *y*, *y2*, etc., or ** to not put a y axis in that row. Entries other than ** must be unique. Ignored if `subplots` is present. If missing but `xaxes` is present, will generate consecutive IDs. */ + yaxes?: any[]; + /** + * Vertical space between grid cells, expressed as a fraction of the total height available to one cell. Defaults to 0.1 for coupled-axes grids and 0.3 for independent grids. + * Range: [0, 1] + */ + ygap?: number; + /** + * Sets where the y axis labels and titles go. *left* means the very left edge of the grid. *left plot* is the leftmost plot that each y axis is used in. *right* and *right plot* are similar. + * @default 'left plot' + */ + yside?: 'left' | 'left plot' | 'right plot' | 'right'; + }; + height?: number; + hoveranywhere?: boolean; + hoverdistance?: number; + hoverlabel?: { + /** + * Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines + * @default 'auto' + */ + align?: 'left' | 'right' | 'auto'; + /** Sets the background color of all hover labels on graph */ + bgcolor?: Color; + /** Sets the border color of all hover labels on graph. */ + bordercolor?: Color; + /** Sets the default hover label font used by all traces on the graph. */ + font?: Font; + /** Sets the font for group titles in hover (unified modes). Defaults to `hoverlabel.font`. */ + grouptitlefont?: Font; + /** + * Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. + * @default 15 + * Minimum: -1 + */ + namelength?: number; + /** + * Sets whether or not to show the hover label arrow/triangle pointing to the data point. + * @default true + */ + showarrow?: boolean; + }; + hovermode?: 'x' | 'y' | 'closest' | false | 'x unified' | 'y unified'; + hoversort?: 'trace' | 'value descending' | 'value ascending'; + hoversubplots?: 'single' | 'overlaying' | 'axis'; + images?: LayoutImage[]; + legend?: Legend; + map?: MapLayout; + mapbox?: MapLayout; + margin?: { + /** + * Turns on/off margin expansion computations. Legends, colorbars, updatemenus, sliders, axis rangeselector and rangeslider are allowed to push the margins by defaults. + * @default true + */ + autoexpand?: boolean; + /** + * Sets the bottom margin (in px). + * @default 80 + * Minimum: 0 + */ + b?: number; + /** + * Sets the left margin (in px). + * @default 80 + * Minimum: 0 + */ + l?: number; + /** + * Sets the amount of padding (in px) between the plotting area and the axis lines + * @default 0 + * Minimum: 0 + */ + pad?: number; + /** + * Sets the right margin (in px). + * @default 80 + * Minimum: 0 + */ + r?: number; + /** + * Sets the top margin (in px). + * @default 100 + * Minimum: 0 + */ + t?: number; + }; + meta?: any; + minreducedheight?: number; + minreducedwidth?: number; + modebar?: { + /** Sets the color of the active or hovered on icons in the modebar. */ + activecolor?: Color; + /** Determines which predefined modebar buttons to add. Please note that these buttons will only be shown if they are compatible with all trace types used in a graph. Similar to `config.modeBarButtonsToAdd` option. This may include *v1hovermode*, *hoverclosest*, *hovercompare*, *togglehover*, *togglespikelines*, *drawline*, *drawopenpath*, *drawclosedpath*, *drawcircle*, *drawrect*, *eraseshape*. */ + add?: string | string[]; + /** Sets the background color of the modebar. */ + bgcolor?: Color; + /** Sets the color of the icons in the modebar. */ + color?: Color; + /** + * Sets the orientation of the modebar. + * @default 'h' + */ + orientation?: 'v' | 'h'; + /** Determines which predefined modebar buttons to remove. Similar to `config.modeBarButtonsToRemove` option. This may include *autoScale2d*, *autoscale*, *hoverCompareCartesian*, *hovercompare*, *lasso*, *lasso2d*, *orbitRotation*, *orbitrotation*, *pan*, *pan2d*, *pan3d*, *reset*, *resetCameraDefault3d*, *resetCameraLastSave3d*, *resetGeo*, *resetSankeyGroup*, *resetScale2d*, *resetViewMap*, *resetViewMapbox*, *resetViews*, *resetcameradefault*, *resetcameralastsave*, *resetsankeygroup*, *resetscale*, *resetview*, *resetviews*, *select*, *select2d*, *sendChartToCloud*, *sendcharttocloud*, *tableRotation*, *tablerotation*, *toImage*, *toggleHover*, *toggleSpikelines*, *togglehover*, *togglespikelines*, *toimage*, *zoom*, *zoom2d*, *zoom3d*, *zoomIn2d*, *zoomInGeo*, *zoomInMap*, *zoomInMapbox*, *zoomOut2d*, *zoomOutGeo*, *zoomOutMap*, *zoomOutMapbox*, *zoomin*, *zoomout*. */ + remove?: string | string[]; + /** Controls persistence of user-driven changes related to the modebar, including `hovermode`, `dragmode`, and `showspikes` at both the root level and inside subplots. Defaults to `layout.uirevision`. */ + uirevision?: any; + }; + newselection?: { + line?: { + /** Sets the line color. By default uses either dark grey or white to increase contrast with background color. */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'dot' + */ + dash?: Dash; + /** + * Sets the line width (in px). + * @default 1 + * Minimum: 1 + */ + width?: number; + }; + /** + * Describes how a new selection is created. If `immediate`, a new selection is created after first mouse up. If `gradual`, a new selection is not created after first mouse. By adding to and subtracting from the initial selection, this option allows declaring extra outlines of the selection. + * @default 'immediate' + */ + mode?: 'immediate' | 'gradual'; + }; + newshape?: { + /** + * When `dragmode` is set to *drawrect*, *drawline* or *drawcircle* this limits the drag to be horizontal, vertical or diagonal. Using *diagonal* there is no limit e.g. in drawing lines in any direction. *ortho* limits the draw to be either horizontal or vertical. *horizontal* allows horizontal extend. *vertical* allows vertical extend. + * @default 'diagonal' + */ + drawdirection?: 'ortho' | 'horizontal' | 'vertical' | 'diagonal'; + /** + * Sets the color filling new shapes' interior. Please note that if using a fillcolor with alpha greater than half, drag inside the active shape starts moving the shape underneath, otherwise a new shape could be started over. + * @default 'rgba(0,0,0,0)' + */ + fillcolor?: Color; + /** + * Determines the path's interior. For more info please visit https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule + * @default 'evenodd' + */ + fillrule?: 'evenodd' | 'nonzero'; + label?: { + /** Sets the new shape label text font. */ + font?: Font; + /** + * Sets padding (in px) between edge of label and edge of new shape. + * @default 3 + * Minimum: 0 + */ + padding?: number; + /** Sets the text to display with the new shape. It is also used for legend item if `name` is not provided. */ + text?: string; + /** + * Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle *auto* is the same angle as the line. For all other shapes, angle *auto* is horizontal. + * @default 'auto' + */ + textangle?: number | 'auto'; + /** Sets the position of the label text relative to the new shape. Supported values for rectangles, circles and paths are *top left*, *top center*, *top right*, *middle left*, *middle center*, *middle right*, *bottom left*, *bottom center*, and *bottom right*. Supported values for lines are *start*, *middle*, and *end*. Default: *middle center* for rectangles, circles, and paths; *middle* for lines. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | 'start' | 'middle' | 'end'; + /** Template string used for rendering the new shape's label. Note that this will override `text`. Variables are inserted using %{variable}, for example "x0: %{x0}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{x0:$.2f}". See https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{x0|%m %b %Y}". See https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. A single multiplication or division operation may be applied to numeric variables, and combined with d3 number formatting, for example "Length in cm: %{x0*2.54}", "%{slope*60:.1f} meters per second." For log axes, variable values are given in log units. For date axes, x/y coordinate variables and center variables use datetimes, while all other variable values use values in ms. Finally, the template string has access to variables `x0`, `x1`, `y0`, `y1`, `slope`, `dx`, `dy`, `width`, `height`, `length`, `xcenter`, `ycenter`, `simpleXVariables` and `simpleYVariables`. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. */ + texttemplate?: string; + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ + texttemplatefallback?: any; + /** + * Sets the label's horizontal position anchor This anchor binds the specified `textposition` to the *left*, *center* or *right* of the label text. For example, if `textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the new shape. + * @default 'auto' + */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** Sets the label's vertical position anchor This anchor binds the specified `textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the new shape. */ + yanchor?: 'top' | 'middle' | 'bottom'; + }; + /** + * Specifies whether new shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*). + * @default 'above' + */ + layer?: 'below' | 'above' | 'between'; + /** + * Sets the reference to a legend to show new shape in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for new shape. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for new shape. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for new shape. + * Minimum: 0 + */ + legendwidth?: number; + line?: { + /** Sets the line color. By default uses either dark grey or white to increase contrast with background color. */ + color?: Color; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Sets the line width (in px). + * @default 4 + * Minimum: 0 + */ + width?: number; + }; + /** Sets new shape name. The name appears as the legend item. */ + name?: string; + /** + * Sets the opacity of new shapes. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + /** + * Determines whether or not new shape is shown in the legend. + * @default false + */ + showlegend?: boolean; + /** + * Determines whether or not new shape is visible. If *legendonly*, the shape is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + }; + paper_bgcolor?: Color; + plot_bgcolor?: Color; + polar?: PolarLayout; + scene?: Scene; + selectdirection?: 'h' | 'v' | 'd' | 'any'; + selectionrevision?: any; + selections?: LayoutSelection[]; + separators?: string; + shapes?: Shape[]; + showlegend?: boolean; + sliders?: Slider[]; + smith?: SmithLayout; + spikedistance?: number; + template?: any; + ternary?: TernaryLayout; + title?: { + /** + * Determines whether the title can automatically push the figure margins. If `yref='paper'` then the margin will expand to ensure that the title doesn’t overlap with the edges of the container. If `yref='container'` then the margins will ensure that the title doesn’t overlap with the plot area, tick labels, and axis titles. If `automargin=true` and the margins need to be expanded, then y will be set to a default 1 and yanchor will be set to an appropriate default to ensure that minimal margin space is needed. Note that when `yref='paper'`, only 1 or 0 are allowed y values. Invalid values will be reset to the default 1. + * @default false + */ + automargin?: boolean; + /** Sets the title font. */ + font?: Font; + /** Sets the padding of the title. Each padding value only applies when the corresponding `xanchor`/`yanchor` value is set accordingly. E.g. for left padding to take effect, `xanchor` must be set to *left*. The same rule applies if `xanchor`/`yanchor` is determined automatically. Padding is muted if the respective anchor value is *middle*\/*center*. */ + pad?: { + /** + * The amount of padding (in px) along the bottom of the component. + * @default 0 + */ + b?: number; + /** + * The amount of padding (in px) on the left side of the component. + * @default 0 + */ + l?: number; + /** + * The amount of padding (in px) on the right side of the component. + * @default 0 + */ + r?: number; + /** + * The amount of padding (in px) along the top of the component. + * @default 0 + */ + t?: number; + }; + subtitle?: LegendGroupTitle; + /** Sets the plot's title. */ + text?: string; + /** + * Sets the x position with respect to `xref` in normalized coordinates from *0* (left) to *1* (right). + * @default 0.5 + * Range: [0, 1] + */ + x?: number; + /** + * Sets the title's horizontal alignment with respect to its x position. *left* means that the title starts at x, *right* means that the title ends at x and *center* means that the title's center is at x. *auto* divides `xref` by three and calculates the `xanchor` value automatically based on the value of `x`. + * @default 'auto' + */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** + * Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only. + * @default 'container' + */ + xref?: YRef; + /** + * Sets the y position with respect to `yref` in normalized coordinates from *0* (bottom) to *1* (top). *auto* places the baseline of the title onto the vertical center of the top margin. + * @default 'auto' + * Range: [0, 1] + */ + y?: number; + /** + * Sets the title's vertical alignment with respect to its y position. *top* means that the title's cap line is at y, *bottom* means that the title's baseline is at y and *middle* means that the title's midline is at y. *auto* divides `yref` by three and calculates the `yanchor` value automatically based on the value of `y`. + * @default 'auto' + */ + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; + /** + * Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only. + * @default 'container' + */ + yref?: YRef; + }; + transition?: Transition; + uirevision?: any; + uniformtext?: { + /** + * Sets the minimum text size between traces of the same type. + * @default 0 + * Minimum: 0 + */ + minsize?: number; + /** + * Determines how the font size for various text elements are uniformed between each trace type. If the computed text sizes were smaller than the minimum size defined by `uniformtext.minsize` using *hide* option hides the text; and using *show* option shows the text without further downscaling. Please note that if the size defined by `minsize` is greater than the font size defined by trace, then the `minsize` is used. + * @default false + */ + mode?: false | 'hide' | 'show'; + }; + updatemenus?: UpdateMenu[]; + width?: number; + xaxis?: LayoutAxis; + yaxis?: LayoutAxis; + + // Subplot index signatures for numbered variants + [key: `coloraxis${number}`]: ColorAxis; + [key: `geo${number}`]: GeoLayout; + [key: `legend${number}`]: Legend; + [key: `map${number}`]: MapLayout; + [key: `mapbox${number}`]: MapLayout; + [key: `polar${number}`]: PolarLayout; + [key: `scene${number}`]: Scene; + [key: `smith${number}`]: SmithLayout; + [key: `ternary${number}`]: TernaryLayout; + [key: `xaxis${number}`]: LayoutAxis; + [key: `yaxis${number}`]: LayoutAxis; +} + +// --------------------------------------------------------------------------- +// Animation, frames, and config interfaces +// --------------------------------------------------------------------------- + +export interface AnimationOpts { + /** + * The direction in which to play the frames triggered by the animation call + * @default 'forward' + */ + direction?: 'forward' | 'reverse'; + frame?: AnimationFrameOpts; + /** + * Play frames starting at the current frame instead of the beginning. + * @default false + */ + fromcurrent?: boolean; + /** + * Describes how a new animate call interacts with currently-running animations. If `immediate`, current animations are interrupted and the new animation is started. If `next`, the current frame is allowed to complete, after which the new animation is started. If `afterall` all existing frames are animated to completion before the new animation is started. + * @default 'afterall' + */ + mode?: 'immediate' | 'next' | 'afterall'; + transition?: Transition; +} + +export interface Frame { + /** The name of the frame into which this frame's properties are merged before applying. This is used to unify properties and avoid needing to specify the same values for the same properties in multiple frames. */ + baseframe?: string; + /** A list of traces this frame modifies. The format is identical to the normal trace definition. */ + data?: any[]; + /** An identifier that specifies the group to which the frame belongs, used by animate to select a subset of frames. */ + group?: string; + /** Layout properties which this frame modifies. The format is identical to the normal layout definition. */ + layout?: Partial; + /** A label by which to identify the frame */ + name?: string; + /** A list of trace indices that identify the respective traces in the data attribute */ + traces?: any; +} + +export interface Edits { + /** + * Determines if the main anchor of the annotation is editable. The main anchor corresponds to the text (if no arrow) or the arrow (which drags the whole thing leaving the arrow length & direction unchanged). + * @default false + */ + annotationPosition?: boolean; + /** + * Has only an effect for annotations with arrows. Enables changing the length and direction of the arrow. + * @default false + */ + annotationTail?: boolean; + /** + * Enables editing annotation text. + * @default false + */ + annotationText?: boolean; + /** + * Enables editing axis title text. + * @default false + */ + axisTitleText?: boolean; + /** + * Enables moving colorbars. + * @default false + */ + colorbarPosition?: boolean; + /** + * Enables editing colorbar title text. + * @default false + */ + colorbarTitleText?: boolean; + /** + * Enables moving the legend. + * @default false + */ + legendPosition?: boolean; + /** + * Enables editing the trace name fields from the legend + * @default false + */ + legendText?: boolean; + /** + * Enables moving shapes. + * @default false + */ + shapePosition?: boolean; + /** + * Enables editing the global layout title. + * @default false + */ + titleText?: boolean; +} + +export interface ConfigBase { + /** + * Determines whether the graphs are plotted with respect to layout.autosize:true and infer its container size. + * @default false + */ + autosizable?: boolean; + /** + * Determines the mode bar display mode. If *true*, the mode bar is always visible. If *false*, the mode bar is always hidden. If *hover*, the mode bar is visible while the mouse cursor is on the graph container. + * @default 'hover' + */ + displayModeBar?: 'hover' | true | false; + /** + * Determines whether or not notifier is displayed. + * @default true + */ + displayNotifier?: boolean; + /** + * Determines whether or not the plotly logo is displayed on the end of the mode bar. + * @default true + */ + displaylogo?: boolean; + /** + * Sets the double click interaction mode. Has an effect only in cartesian plots. If *false*, double click is disable. If *reset*, double click resets the axis ranges to their initial values. If *autosize*, double click set the axis ranges to their autorange values. If *reset+autosize*, the odd double clicks resets the axis ranges to their initial values and even double clicks set the axis ranges to their autorange values. + * @default 'reset+autosize' + */ + doubleClick?: false | 'reset' | 'autosize' | 'reset+autosize'; + /** + * Sets the delay for registering a double-click in ms. This is the time interval (in ms) between first mousedown and 2nd mouseup to constitute a double-click. This setting propagates to all on-subplot double clicks (except for geo, mapbox and map) and on-legend double clicks. + * @default 300 + * Minimum: 0 + */ + doubleClickDelay?: number; + /** + * Enables moving selections. + * @default true + */ + editSelection?: boolean; + /** + * Determines whether the graph is editable or not. Sets all pieces of `edits` unless a separate `edits` config item overrides individual parts. + * @default false + */ + editable?: boolean; + edits?: Edits; + /** + * When `layout.autosize` is turned on, determines whether the graph fills the container (the default) or the screen (if set to *true*). + * @default false + */ + fillFrame?: boolean; + /** + * When `layout.autosize` is turned on, set the frame margins in fraction of the graph size. + * @default 0 + * Range: [0, 0.5] + */ + frameMargins?: number; + /** + * Which localization should we use? Should be a string like 'en' or 'en-US'. + * @default 'en-US' + */ + locale?: string; + /** + * Localization definitions Locales can be provided either here (specific to one chart) or globally by registering them as modules. Should be an object of objects {locale: {dictionary: {...}, format: {...}}} { da: { dictionary: {'Reset axes': 'Nulstil aksler', ...}, format: {months: [...], shortMonths: [...]} }, ... } All parts are optional. When looking for translation or format fields, we look first for an exact match in a config locale, then in a registered module. If those fail, we strip off any regionalization ('en-US' -> 'en') and try each (config, registry) again. The final fallback for translation is untranslated (which is US English) and for formats is the base English (the only consequence being the last fallback date format %x is DD/MM/YYYY instead of MM/DD/YYYY). Currently `grouping` and `currency` are ignored for our automatic number formatting, but can be used in custom formats. + * @default {} + */ + locales?: any; + /** + * Turn all console logging on or off (errors will be thrown) This should ONLY be set via Plotly.setPlotConfig Available levels: 0: no logs 1: warnings and errors, but not informational messages 2: verbose logs + * @default 1 + * Range: [0, 2] + */ + logging?: number; + /** Mapbox access token (required to plot mapbox trace types) If using an Mapbox Atlas server, set this option to '' so that plotly.js won't attempt to authenticate to the public Mapbox server. */ + mapboxAccessToken?: string; + /** + * Define fully custom mode bar buttons as nested array, where the outer arrays represents button groups, and the inner arrays have buttons config objects or names of default buttons See ./components/modebar/buttons.js for more info. + * @default false + */ + modeBarButtons?: any; + /** + * Add mode bar button using config objects See ./components/modebar/buttons.js for list of arguments. To enable predefined modebar buttons e.g. shape drawing, hover and spikelines, simply provide their string name(s). This could include: *v1hovermode*, *hoverclosest*, *hovercompare*, *togglehover*, *togglespikelines*, *drawline*, *drawopenpath*, *drawclosedpath*, *drawcircle*, *drawrect* and *eraseshape*. Please note that these predefined buttons will only be shown if they are compatible with all trace types used in a graph. + * @default [] + */ + modeBarButtonsToAdd?: any; + /** + * Remove mode bar buttons by name. See ./components/modebar/buttons.js for the list of names. + * @default [] + */ + modeBarButtonsToRemove?: any; + /** + * Set on-graph logging (notifier) level This should ONLY be set via Plotly.setPlotConfig Available levels: 0: no on-graph logs 1: warnings and errors, but not informational messages 2: verbose logs + * @default 0 + * Range: [0, 2] + */ + notifyOnLogging?: number; + /** + * Set the pixel ratio during WebGL image export. + * @default 2 + * Range: [1, 4] + */ + plotGlPixelRatio?: number; + /** Sets the URL for the `sendChartToCloud` modebar button. When clicked, the button will send the chart data to this URL. */ + plotlyServerURL?: string; + /** + * Sets the length of the undo/redo queue. + * @default 0 + * Minimum: 0 + */ + queueLength?: number; + /** + * Determines whether to change the layout size when window is resized. In v3, this option will be removed and will always be true. + * @default false + */ + responsive?: boolean; + /** + * Determines whether mouse wheel or two-finger scroll zooms is enable. Turned on by default for gl3d, geo, mapbox and map subplots (as these subplot types do not have zoombox via pan), but turned off by default for cartesian subplots. Set `scrollZoom` to *false* to disable scrolling for all subplots. + * @default 'gl3d+geo+map' + */ + scrollZoom?: 'cartesian' | 'gl3d' | 'geo' | 'mapbox' | 'map' | true | false | (string & {}); + /** + * Set function to add the background color (i.e. `layout.paper_color`) to a different container. This function take the graph div as first argument and the current background color as second argument. Alternatively, set to string *opaque* to ensure there is white behind it. + * @default 'transparent' + */ + setBackground?: any; + /** + * Set to *false* to omit cartesian axis pan/zoom drag handles. + * @default true + */ + showAxisDragHandles?: boolean; + /** + * Set to *false* to omit direct range entry at the pan/zoom drag points, note that `showAxisDragHandles` must be enabled to have an effect. + * @default true + */ + showAxisRangeEntryBoxes?: boolean; + /** + * Should we include a modebar button that sends this chart to a URL specified by `plotlyServerURL`, for sharing the chart with others? Note that this button will (after a confirmation step) send chart data to an external server. + * @default false + */ + showSendToCloud?: boolean; + /** + * Determines whether or not tips are shown while interacting with the resulting graphs. + * @default true + */ + showTips?: boolean; + /** + * Determines whether the graphs are interactive or not. If *false*, no interactivity, for export or image generation. + * @default false + */ + staticPlot?: boolean; + /** + * Statically override options for toImage modebar button allowed keys are format, filename, width, height, scale see ../components/modebar/buttons.js + * @default {} + */ + toImageButtonOptions?: any; + /** + * Set the URL to topojson used in geo charts. By default, the topojson files are fetched from cdn.plot.ly. For example, set this option to: /dist/topojson/ to render geographical feature using the topojson files that ship with the plotly.js module. + * @default 'https://cdn.plot.ly/un/' + */ + topojsonURL?: string; + /** + * Determines whether math should be typeset or not, when MathJax (either v2 or v3) is present on the page. + * @default true + */ + typesetMath?: boolean; + /** + * watermark the images with the company's logo + * @default false + */ + watermark?: boolean; +} diff --git a/src/types/index.d.ts b/src/types/index.d.ts new file mode 100644 index 00000000000..258c0897fa3 --- /dev/null +++ b/src/types/index.d.ts @@ -0,0 +1,23 @@ +/** + * Central type definitions for plotly.js + * + * @example + * import type { GraphDiv, Layout, PlotData } from '../types'; + */ + +// Library utilities +export * from './lib/common'; + +// Core types (public) +export * from './core/api'; +export * from './core/config'; +export * from './core/events'; +export * from './core/layout'; + +// Core types (internal — not re-exported in lib/index.d.ts) +export * from './core/data.internal'; +export * from './core/graph-div.internal'; +export * from './core/layout.internal'; + +// Schema-generated types (traces + layout + shared interfaces) +export * from './generated/schema'; diff --git a/src/types/lib/attributes.d.ts b/src/types/lib/attributes.d.ts new file mode 100644 index 00000000000..70010f41384 --- /dev/null +++ b/src/types/lib/attributes.d.ts @@ -0,0 +1,231 @@ +/** + * Attribute schema validation types + * + * Plotly's attribute files describe runtime metadata (valType, dflt, + * editType, description, ...). This file provides: + * + * - AttrInfo / AttributeMap: structural shape that attribute objects must + * satisfy (compile-time validation of attribute authoring) + * + * Author attribute files like: + * + * const attributes = { + * orientation: { + * valType: 'enumerated', + * values: ['v', 'h'] as const, + * dflt: 'h', + * editType: 'modebar', + * }, + * bgcolor: { valType: 'color', editType: 'modebar' }, + * } as const satisfies AttributeMap; + * + * export default attributes; + */ + +import type { ColorScale, Datum, TypedArray } from './common'; + +// --------------------------------------------------------------------------- +// Attribute info — discriminated union by valType +// --------------------------------------------------------------------------- + +/** + * Fields shared by every attribute kind, regardless of `valType`. Specific + * attribute interfaces extend this with their `valType` discriminator and + * any type-specific options. + */ +interface BaseAttrInfo { + /** Human-readable description of the attribute, surfaced in the schema. */ + description?: string; + /** Plotly editType bucket — what kind of redraw is triggered on change. */ + editType?: string; + /** Semantic role used by the schema and template machinery. */ + role?: 'object' | 'info' | 'style' | 'data'; + /** When true, the attribute accepts a per-point array of values. */ + arrayOk?: boolean; + /** When true, the attribute can be animated via `Plotly.animate`. */ + anim?: boolean; + /** Default value used when the attribute is omitted. */ + dflt?: unknown; + /** Names a reusable item slot in template processing */ + _isLinkedToArray?: string; + /** Marker for axis/subplot id-style attributes */ + _isSubplotObj?: boolean; +} + +/** Attribute backed by a data array (`x`, `y`, `z`, marker channels, etc.). */ +export interface DataArrayAttr extends BaseAttrInfo { + /** Discriminator: data array. */ + valType: 'data_array'; + /** Optional default data array. */ + dflt?: Datum[] | TypedArray; +} + +/** Numeric attribute (may be fractional). */ +export interface NumberAttr extends BaseAttrInfo { + /** Discriminator: number. */ + valType: 'number'; + /** Default numeric value. */ + dflt?: number; + /** Inclusive lower bound. */ + min?: number; + /** Inclusive upper bound. */ + max?: number; +} + +/** Integer-valued attribute. */ +export interface IntegerAttr extends BaseAttrInfo { + /** Discriminator: integer. */ + valType: 'integer'; + /** Default integer value. */ + dflt?: number; + /** Inclusive lower bound. */ + min?: number; + /** Inclusive upper bound. */ + max?: number; +} + +/** Free-form string attribute, optionally constrained to a set of values. */ +export interface StringAttr extends BaseAttrInfo { + /** Discriminator: string. */ + valType: 'string'; + /** Default string value. */ + dflt?: string; + /** Allow whitespace-only strings */ + noBlank?: boolean; + /** When true, the coercer rejects non-string inputs instead of stringifying. */ + strict?: boolean; + /** Optional allow-list of values (still typed as string for flexibility). */ + values?: readonly string[]; +} + +/** Boolean attribute. */ +export interface BooleanAttr extends BaseAttrInfo { + /** Discriminator: boolean. */ + valType: 'boolean'; + /** Default boolean value. */ + dflt?: boolean; +} + +/** Color attribute — CSS color string. */ +export interface ColorAttr extends BaseAttrInfo { + /** Discriminator: color. */ + valType: 'color'; + /** Default color (CSS color string). */ + dflt?: string; +} + +/** Colorscale attribute — a built-in name or an array of stops. */ +export interface ColorScaleAttr extends BaseAttrInfo { + /** Discriminator: colorscale. */ + valType: 'colorscale'; + /** Default colorscale. */ + dflt?: ColorScale; +} + +/** Array of CSS color strings, used for categorical palettes. */ +export interface ColorListAttr extends BaseAttrInfo { + /** Discriminator: list of colors. */ + valType: 'colorlist'; + /** Default color list. */ + dflt?: string[]; +} + +/** Angle attribute — degrees, or `'auto'`. */ +export interface AngleAttr extends BaseAttrInfo { + /** Discriminator: angle. */ + valType: 'angle'; + /** Default angle, or `'auto'`. */ + dflt?: number | 'auto'; +} + +/** Subplot identifier (e.g. `'x2'`, `'yaxis3'`); pattern-matched at runtime. */ +export interface SubplotIdAttr extends BaseAttrInfo { + /** Discriminator: subplot id. */ + valType: 'subplotid'; + /** Default subplot id. */ + dflt?: string; + /** Optional regex validation pattern. */ + regex?: string; +} + +/** + * Enumerated attribute — value must be one of `values`. Generic parameter + * `V` narrows the union when authors declare the values with `as const`. + */ +export interface EnumeratedAttr extends BaseAttrInfo { + /** Discriminator: enumerated. */ + valType: 'enumerated'; + /** Allowed values. */ + values: V; + /** Default value, must appear in `values`. */ + dflt?: V[number]; + /** When true, numeric values are coerced to their nearest enum entry. */ + coerceNumber?: boolean; +} + +/** + * Flag-list attribute — value is a `+`-joined combination of `flags` plus + * any single value from `extras` (e.g. `'x+y'`, `'all'`). + */ +export interface FlagListAttr extends BaseAttrInfo { + /** Discriminator: flag list. */ + valType: 'flaglist'; + /** Combinable flag tokens. */ + flags: F; + /** Standalone values that replace (rather than combine with) flags. */ + extras?: readonly string[]; + /** Default flag-list value. */ + dflt?: string; +} + +/** + * Info-array attribute — fixed- or variable-length tuple. `items` is one + * descriptor (variable length) or an array of descriptors (per-slot). + */ +export interface InfoArrayAttr extends BaseAttrInfo { + /** Discriminator: info array. */ + valType: 'info_array'; + /** Per-slot or single-element shape descriptor. */ + items?: AttrInfo | readonly AttrInfo[]; + /** When true, the array can have arbitrary length. */ + freeLength?: boolean; + /** Dimensionality of the array (`1`, `2`, or `'1-2'` for either). */ + dimensions?: 1 | 2 | '1-2'; + /** Default array value. */ + dflt?: unknown[]; +} + +/** Catch-all attribute — accepts anything; weakest typing. */ +export interface AnyAttr extends BaseAttrInfo { + /** Discriminator: any. */ + valType: 'any'; +} + +/** + * Union of all leaf attribute shapes (anything with a `valType`). + */ +export type AttrInfo = + | DataArrayAttr + | NumberAttr + | IntegerAttr + | StringAttr + | BooleanAttr + | ColorAttr + | ColorScaleAttr + | ColorListAttr + | AngleAttr + | SubplotIdAttr + | EnumeratedAttr + | FlagListAttr + | InfoArrayAttr + | AnyAttr; + +/** + * A nested map of attribute info. Properties may be leaf attributes + * (with a `valType`) or further-nested maps. A few special meta-keys + * (editType, role, _isLinkedToArray, etc.) live alongside attributes. + */ +export interface AttributeMap { + /** Either a leaf attribute, a nested map, or one of the meta-key primitives. */ + [key: string]: AttrInfo | AttributeMap | string | boolean | undefined; +} diff --git a/src/types/lib/common.d.ts b/src/types/lib/common.d.ts new file mode 100644 index 00000000000..14c54e0001e --- /dev/null +++ b/src/types/lib/common.d.ts @@ -0,0 +1,112 @@ +/** + * Common library utility types + * + * Utility types, scalars, and helpers used throughout plotly.js + */ + +// --------------------------------------------------------------------------- +// Scalar / union types +// --------------------------------------------------------------------------- + +/** + * A single data value as accepted by axes and marker channels. `null` + * represents a missing point. + */ +export type Datum = string | number | Date | null; + +/** + * Any numeric typed array plotly.js accepts in place of a plain `number[]`. + * Typed arrays avoid per-element boxing and are recommended for large + * datasets. + */ +export type TypedArray = + | Int8Array + | Uint8Array + | Int16Array + | Uint16Array + | Int32Array + | Uint32Array + | Uint8ClampedArray + | Float32Array + | Float64Array; + +/** + * A color value. Accepts CSS color strings, raw numeric values (mapped via + * a colorscale), or arrays/2-D arrays for per-point/per-grid coloring. + */ +export type Color = + | string + | number + | Array + | Array>; + +/** + * A colorscale specification: a named built-in scale (`'Viridis'`), an + * array of CSS color strings, or an array of `[stop, color]` tuples where + * `stop` is in `[0, 1]`. + */ +export type ColorScale = string | string[] | Array<[number, string]>; + +/** + * Value for `dtick` (tick spacing): a number for numeric axes, a + * string for date/log/category axes (e.g. `'M1'` = one month). + */ +export type DTickValue = number | string; + +/** + * Marker symbol — a symbol name (`'circle'`, `'square-open'`), a symbol + * index, or an array thereof for per-point symbols. + */ +export type MarkerSymbol = string | number | Array; + +/** Horizontal anchor position for components (legend, annotation, etc.). */ +export type XAnchor = 'auto' | 'left' | 'center' | 'right'; +/** Vertical anchor position for components (legend, annotation, etc.). */ +export type YAnchor = 'auto' | 'top' | 'middle' | 'bottom'; + +// --------------------------------------------------------------------------- +// Error bars +// --------------------------------------------------------------------------- + +/** + * Shared options applicable to all error bar variants. Composed into + * `ErrorBar` along with type-specific fields. + */ +export interface ErrorOptions { + /** Whether error bars are drawn. */ + visible: boolean; + /** When true, the same length is used on both sides of each point. */ + symmetric: boolean; + /** Color of the error bar lines. */ + color: Color; + /** Line thickness in pixels. */ + thickness: number; + /** Cross-tick width in pixels at the end of each error bar. */ + width: number; +} + +/** + * Error bar configuration — a tagged union over `type`: + * - `'constant'` / `'percent'` carry a scalar `value` (and optional + * `valueminus` for asymmetric bars). + * - `'data'` carries explicit `array` (and optional `arrayminus`) data. + */ +export type ErrorBar = Partial & + ( + | { + /** Bar length is computed from `value` (constant or percent of point). */ + type: 'constant' | 'percent'; + /** Magnitude of the upper (or symmetric) bar. */ + value: number; + /** Magnitude of the lower bar when asymmetric. */ + valueminus?: number | undefined; + } + | { + /** Bar lengths are taken from explicit data arrays. */ + type: 'data'; + /** Per-point magnitudes for the upper (or symmetric) bar. */ + array: Datum[]; + /** Per-point magnitudes for the lower bar when asymmetric. */ + arrayminus?: Datum[] | undefined; + } + ); diff --git a/stackgl_modules/index.js b/stackgl_modules/index.js index 63ecc09f5be..d32e41cb3ec 100644 --- a/stackgl_modules/index.js +++ b/stackgl_modules/index.js @@ -37,7 +37,6 @@ var __webpack_unused_export__; -function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } var base64 = __webpack_require__(7507); var ieee754 = __webpack_require__(3778); var customInspectSymbol = typeof Symbol === 'function' && typeof Symbol['for'] === 'function' // eslint-disable-line dot-notation @@ -72,7 +71,7 @@ function typedArraySupport() { try { var arr = new Uint8Array(1); var proto = { - foo: function foo() { + foo: function () { return 42; } }; @@ -85,14 +84,14 @@ function typedArraySupport() { } Object.defineProperty(Buffer.prototype, 'parent', { enumerable: true, - get: function get() { + get: function () { if (!Buffer.isBuffer(this)) return undefined; return this.buffer; } }); Object.defineProperty(Buffer.prototype, 'offset', { enumerable: true, - get: function get() { + get: function () { if (!Buffer.isBuffer(this)) return undefined; return this.byteOffset; } @@ -137,7 +136,7 @@ function from(value, encodingOrOffset, length) { return fromArrayView(value); } if (value == null) { - throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + _typeof(value)); + throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + typeof value); } if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) { return fromArrayBuffer(value, encodingOrOffset, length); @@ -157,7 +156,7 @@ function from(value, encodingOrOffset, length) { if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === 'function') { return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length); } - throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + _typeof(value)); + throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + typeof value); } /** @@ -391,7 +390,7 @@ function byteLength(string, encoding) { return string.byteLength; } if (typeof string !== 'string') { - throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + _typeof(string)); + throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + typeof string); } var len = string.length; var mustMatch = arguments.length > 2 && arguments[2] === true; @@ -559,7 +558,7 @@ Buffer.prototype.compare = function compare(target, start, end, thisStart, thisE target = Buffer.from(target, target.offset, target.byteLength); } if (!Buffer.isBuffer(target)) { - throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + _typeof(target)); + throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + typeof target); } if (start === undefined) { start = 0; @@ -1547,18 +1546,18 @@ var hexSliceLookupTable = function () { module.exports = isMobile; module.exports.isMobile = isMobile; module.exports["default"] = isMobile; -var mobileRE = /(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i; -var notMobileRE = /CrOS/; -var tabletRE = /android|ipad|playbook|silk/i; +const mobileRE = /(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i; +const notMobileRE = /CrOS/; +const tabletRE = /android|ipad|playbook|silk/i; function isMobile(opts) { if (!opts) opts = {}; - var ua = opts.ua; + let ua = opts.ua; if (!ua && typeof navigator !== 'undefined') ua = navigator.userAgent; if (ua && ua.headers && typeof ua.headers['user-agent'] === 'string') { ua = ua.headers['user-agent']; } if (typeof ua !== 'string') return false; - var result = mobileRE.test(ua) && !notMobileRE.test(ua) || !!opts.tablet && tabletRE.test(ua); + let result = mobileRE.test(ua) && !notMobileRE.test(ua) || !!opts.tablet && tabletRE.test(ua); if (!result && opts.tablet && opts.featureDetect && navigator && navigator.maxTouchPoints > 1 && ua.indexOf('Macintosh') !== -1 && ua.indexOf('Safari') !== -1) { result = true; } diff --git a/stackgl_modules/package-lock.json b/stackgl_modules/package-lock.json index 26ee510933d..f82c1d02b65 100644 --- a/stackgl_modules/package-lock.json +++ b/stackgl_modules/package-lock.json @@ -43,358 +43,650 @@ "zero-crossings": "plotly/zero-crossings#v1.1.0" }, "devDependencies": { - "@babel/core": "^7.25.2", - "@babel/plugin-transform-modules-commonjs": "7.24.1", - "@babel/preset-env": "7.24.1", - "babel-loader": "9.1.3", + "@babel/core": "^8.0.1", + "@babel/plugin-transform-modules-commonjs": "8.0.1", + "@babel/preset-env": "8.0.1", + "babel-loader": "10.1.1", "ify-loader": "1.1.0", "node-polyfill-webpack-plugin": "^4.0.0", "webpack": "^5.105.4", "webpack-cli": "5.1.4" } }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "node_modules/@babel/compat-data": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-8.0.0.tgz", + "integrity": "sha512-DOjnob/cXOUgDOozCDeq/aK2p5y8dUIVdf6tNhEV1HQRd6I8aQ4f4fbtHRVEvb6lP3BGomrKHiS8ICAASSVQSw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/core": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-8.0.1.tgz", + "integrity": "sha512-5FgxM4dLQpMJHSiVATk8foW263dVHQHBVpXYiimNECVWG01f4nFyEbQixeT6Mwvg7TayREJ2gpKl3o2RoMdnqw==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" + "@babel/code-frame": "^8.0.0", + "@babel/generator": "^8.0.0", + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helpers": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/template": "^8.0.0", + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0", + "@types/gensync": "^1.0.5", + "convert-source-map": "^2.0.0", + "empathic": "^2.0.1", + "gensync": "^1.0.0-beta.2", + "import-meta-resolve": "^4.2.0", + "json5": "^2.2.3", + "obug": "^2.1.1", + "semver": "^7.7.3" }, "engines": { - "node": ">=6.0.0" + "node": "^22.18.0 || >=24.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "node_modules/@babel/core/node_modules/@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", - "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "node_modules/@babel/core/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "node_modules/@babel/core/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^8.0.0" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, + "node_modules/@babel/core/node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.0.tgz", + "integrity": "sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", + "@types/jsesc": "^2.5.0", "jsesc": "^3.0.2" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^8.0.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-8.0.0.tgz", + "integrity": "sha512-NSpMkMsvvZqzThJ0p1B02cbtA2ObEyfBvq950bmNkyxsxvcxwhvvCB036rKhlEnuBBo30bOrk13u3FzlKSoRrw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-8.0.0.tgz", + "integrity": "sha512-JwculLABZvyPvyLBpwU/E/IbH2uM3mnxNtIJpxnIfb24y1PrdVxK5Dqjle4DpgqpGRnwgC7G8IkzPdSXZrO1Ew==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@babel/compat-data": "^8.0.0", + "@babel/helper-validator-option": "^8.0.0", + "browserslist": "^4.24.0", + "lru-cache": "^11.0.0", + "semver": "^7.7.3" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz", - "integrity": "sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-8.0.1.tgz", + "integrity": "sha512-++t3ZktzlLmASAxIlxeXQK9Z2YwUafYGYcvGBFevqOqt16HozVHStUoQvWD09fzAZOb/uJGpUTBuGK41AJAuOA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-member-expression-to-functions": "^8.0.0", + "@babel/helper-optimise-call-expression": "^8.0.0", + "@babel/helper-replace-supers": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0", + "@babel/traverse": "^8.0.0", + "semver": "^7.7.3" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-8.0.1.tgz", + "integrity": "sha512-PydTbcVTiIfVweHMeY1u3MslaD/ZzvnaTNhJp+7ghofelLWshF66Ckc/ZsjStfvRQIKQ4uVG0yEJucyDtyrWgw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" + "@babel/helper-annotate-as-pure": "^8.0.0", + "regexpu-core": "^6.3.1", + "semver": "^7.7.3" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", - "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-1.0.0-rc.2.tgz", + "integrity": "sha512-AWy1lGqBObYp6gYE7TCVnjmCMstbTLEVevkzw/wHjD43XZ8HqOOe+PAg2zjROFl9qEjF6LH+QLxSrXGuQqLwBA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "@babel/helper-compilation-targets": "^8.0.0-rc.3 <8.0.0", + "@babel/helper-plugin-utils": "^8.0.0-rc.3 <8.0.0", + "lodash.debounce": "^4.0.8" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@babel/core": "^7.4.0 || ^8.0.0-rc.3" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-compilation-targets": { + "version": "8.0.0-rc.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-8.0.0-rc.6.tgz", + "integrity": "sha512-jqQD45/yUSy63U8zs9hE5FMXS8J1TLAI/NTMx76C6xWO021e13gJACQvuGmEF7syloC39LkkKwhqtAbMku1rwg==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^8.0.0-rc.6", + "@babel/helper-validator-option": "^8.0.0-rc.6", + "browserslist": "^4.24.0", + "lru-cache": "^7.14.1", + "semver": "^7.7.3" + }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-plugin-utils": { + "version": "8.0.0-rc.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-8.0.0-rc.6.tgz", + "integrity": "sha512-sLAjvuIcjzUQJR+CoHwU0JA4i706o71bCJtF+W9sc4KuHK3LCIJCjbKRuzbVn1eubUc66uAEZdBNWSqhLpwp2g==", "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" }, + "peerDependencies": { + "@babel/core": "^8.0.0-rc.6" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-8.0.0.tgz", + "integrity": "sha512-lLozHOM6sWWlxNo8CYqHy4MBZeTvHXNgVPBfPOGsjPKUzHC2Az9QwB6gxdQmpwHl6GlQtbGgS+lj5887guDiLw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-8.0.0.tgz", + "integrity": "sha512-xkXrMbtk87Gk7+oKBVmBc6EORg/Qwx++AHESldmHkpvG8wgccdhJJFwrzqlF382Fk8wfXhJHWE/g/43QvEGNPQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-8.0.0.tgz", + "integrity": "sha512-NZ7mSS93o4ndX4KrbD7W8Sf3QT8Qe24PrnFyUcuOPDzK6faqDFKjY9RG7he7+I7FdiQ4llpnosFqzrXa+Vy3Ew==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-module-imports/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-module-imports/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-module-imports/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-8.0.1.tgz", + "integrity": "sha512-UgAhl1kqiW5ciE0yCXqqvnb4H2n3IELJ7lIIQRezwDPilPEZX5i+Rvbja9MFTkwUn2biEiSMeV31aUzR4Lwakw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" + "@babel/helper-module-imports": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0", + "@babel/traverse": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-8.0.0.tgz", + "integrity": "sha512-3W6satvtPuCUkUx63S2jMoW9EQNYkADgs1HTfufmL7gCmAulHMKupA/12WNz4A0GMMFn/YnWWwqOT9IZrJHQjg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-8.0.1.tgz", + "integrity": "sha512-3PKFgjTyPlhFhorfP+SjKQxLViIL++zWjFOO4hGriYU+Bsm983DxEM1JmDRJVWXV0O9npu+xXRqz7Pbd3mh70g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", - "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-8.0.1.tgz", + "integrity": "sha512-baAKuLEMmu6BCSY3tuiU7qglM1qOZt6F1SrFScA241oNqksxkxfEZEKztlGRmoVns9AQ5UgArH7RsUEjxWnzgQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-wrap-function": "^8.0.0", + "@babel/traverse": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "node_modules/@babel/helper-replace-supers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-8.0.1.tgz", + "integrity": "sha512-B1SZADIcy3tmH8CmWvj4SHi/oAPom4UL3uknTc2QRNsPVLFk/sPnZvQL/8kj7Y5omvjMqie0vklvs6XM4OLW5Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/helper-member-expression-to-functions": "^8.0.0", + "@babel/helper-optimise-call-expression": "^8.0.0", + "@babel/traverse": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + }, + "peerDependencies": { + "@babel/core": "^8.0.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-8.0.0.tgz", + "integrity": "sha512-xmCA9kP3IhySsqhzwIdWGlDN/1A4cCKNBO/uwZx/3YzmDoMePwno2Q5/Bq0q+tYaKbeF940YiKV/kaW8Mzvpjw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-string-parser": { @@ -418,1216 +710,1254 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-8.0.0.tgz", + "integrity": "sha512-U4Dybxh4WESWHt5XhBeExi4DrY0/DNK1aHpQbsrQXCUbFHuMweT0TpLEWKvaraV2Y6fS+ZXunsZ8zIuZIgvF2Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-8.0.0.tgz", + "integrity": "sha512-Qpm8+wi5xfDkBfollanwriCcKniFfBmMmaKB01GVM6VGzKXo1fdxosZp04qEr5HM+LKhwr3hG1yRy8+ORsficA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/template": "^8.0.0", + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/helpers": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", - "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "node_modules/@babel/helper-wrap-function/node_modules/@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "node_modules/@babel/helper-wrap-function/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, "engines": { - "node": ">=6.0.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", - "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "node_modules/@babel/helper-wrap-function/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, + "license": "MIT", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", - "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "node_modules/@babel/helper-wrap-function/node_modules/@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.24.1" + "@babel/types": "^8.0.0" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "parser": "bin/babel-parser.js" }, - "peerDependencies": { - "@babel/core": "^7.13.0" + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", - "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", + "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "node_modules/@babel/helper-wrap-function/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "node_modules/@babel/helper-wrap-function/node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "node_modules/@babel/helpers": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-8.0.0.tgz", + "integrity": "sha512-wfbi91pM3py96oIiJEz7qIpyXDytgr9zQC1HEWwlGNVRAEmItuU/0a41ZUKu1sJGyhhOIpc4t5vk4PYzt8wpsg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/template": "^8.0.0", + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "node_modules/@babel/helpers/node_modules/@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "node_modules/@babel/helpers/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", - "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "node_modules/@babel/helpers/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, + "license": "MIT", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", - "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "node_modules/@babel/helpers/node_modules/@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/types": "^8.0.0" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "parser": "bin/babel-parser.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "node_modules/@babel/helpers/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/@babel/helpers/node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-8.0.1.tgz", + "integrity": "sha512-Ytgjjne4RnG3Oig7ik+NfY4ebRY30BPptVkkyu1f72eINJXRM3/bkU++tIc5aPvyLmo4KH20avq0xJ2o+9aEnw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^8.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "engines": { + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-8.0.1.tgz", + "integrity": "sha512-X7pAMBhuKluA7UfwZNvKN0XVVu/AGeo84Z75eJl85rcb8J2aBzLK92btahM1X5h0oi0QIrbe0qIMA/0+4Buk7w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^8.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "engines": { + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-8.0.1.tgz", + "integrity": "sha512-DJviKTxYfH0hFwnMiW4dnPyMGzS3Hrr4zUfXl1zwQ0QiGlGlNYklLoPSYEQr8S7nau0/K7NdQjTh0qbYuyFjCA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^8.0.1" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-8.0.1.tgz", + "integrity": "sha512-DmR/N+B9+4PbURFj4+zdnWj49/PFAnK2bn8+E4ZAmwn3J5QCxnbG7Ep6aRfz9M8Aw+rBro0kIJQycvzFpl4buQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-8.0.1.tgz", + "integrity": "sha512-x8bi0LFVD2xkULjfNn+hCMg16yAFHAM9fS/ThSFeYBi+0MP9K6qcY2BZb4urUwC7PYtEy5wPe6TKjOEjXrCGFA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0", + "@babel/plugin-transform-optional-chaining": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-8.0.1.tgz", + "integrity": "sha512-P8+RN2n7ts2s1vnE+lXdHYf+dhnmcGSen/kWzBsVluT9Sey5AqmcRXYWlHqgQxaNlKTD5YMa1tf5z4d1v8W88w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", - "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-8.0.1.tgz", + "integrity": "sha512-o/gr7kRlq3PKLLuYth4udOsrC7geBerti+QtwPeyxMOsEQO1d8kDHqk9r2PtMx2y9i8FG7tzyTerfv1yMLSMsQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.1.tgz", - "integrity": "sha512-OTkLJM0OtmzcpOgF7MREERUCdCnCBtBsq3vVFbuq/RKMK0/jdYqdMexWi3zNs7Nzd95ase65MbTGrpFJflOb6A==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-8.0.1.tgz", + "integrity": "sha512-kqnSMF1YHBzuiQrl68675i5Ma1oljvo+SJsNEZFZVBu5BUrVIZm9KId3ui2PdtLK2sv2zM8sJnjPDfgLxQlEqQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-remap-async-to-generator": "^8.0.1", + "@babel/traverse": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", - "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-8.0.1.tgz", + "integrity": "sha512-e1jmmEU4p2Lx64sA1+EF8e8/RxPuegzbXcEbmFp5alDyLE+f2ViUpZ77bRWMXzihTwgVVmn/TOpqDbAuS5g1Ew==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-remap-async-to-generator": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", - "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-8.0.1.tgz", + "integrity": "sha512-0V97/gcf7LIgPieEiK1YT0eXa18XJFSLOTZjzEZhA9SJIqZhD/IwGUrCitBzXSmnGCP7hchwC6svHtJ/Eidcpg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz", - "integrity": "sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-8.0.1.tgz", + "integrity": "sha512-HxiQvKsSCs2jOmMhjDrooHaZYOy6W8bqwXp/zjdgPjsNrda6tK9/CH3a/cVIeg6ge3hSS02ALqvqgIo4rTsuSg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", - "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-8.0.1.tgz", + "integrity": "sha512-tORnYiVhIHnKj90TgbSZXrO24f9oEpA6MgFxpIDSKKlHv7AzBIRhkMlYevanueLNYaQXqZWarfCgXM4bWTfNiw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz", - "integrity": "sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-8.0.1.tgz", + "integrity": "sha512-NEVK+L0Le8h8tJ+IK0CGS5y9Yi1ZHxLj6M5PeanhMFuq9aSo0XI+Wtmbuyop6fTNukOm7ORNntf/kwid891vqQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.12.0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", - "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-8.0.1.tgz", + "integrity": "sha512-phwyCES8kIMAdVOFw25ztmgAvkl2G+TvUv7azUYyrlR1Qoo3eLJC/MU3MGUKFZ4BWtsJ1NTJM1lKRLzKbswg7w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-globals": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-replace-supers": "^8.0.1", + "@babel/traverse": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", - "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-8.0.1.tgz", + "integrity": "sha512-i4l3OGLO8DUDcwdnyraOvILbhqdUf4QgfzhVxSOSzRy49XKXrY7pwaSg9gDSKmhZfNPrEMciBSJSciQh/CjB1A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/template": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", - "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-8.0.1.tgz", + "integrity": "sha512-RtR8uLDl0QcCmqMNIkM8gmDeYZ3rS0ZH+sa+I6sfc09yFoqfp9AEPgBstq9KyfVb0lFCVSRFfJXCI70FIl5ccw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", - "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-8.0.1.tgz", + "integrity": "sha512-czOUoSaZljJ92yu+bYlXqb/UBN8K9daNCob/B6/7nthSvfGP6YhCnfqD64XWfyb2dN4ypxALNplApoJrsMd4fw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", - "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-8.0.1.tgz", + "integrity": "sha512-kNnVLkxFUEcTtCyB5PFVQ5Xoy88Bk1lU/ZgDu97CW8eNhRH2Wsiy8Sq5l5dFnwtIUYjzsXHU77jUy1W5AtGSIw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-8.0.1.tgz", + "integrity": "sha512-Tv43P47o6fuHgBL7HLHQg3WKXohW9CEUGjLtnCDW27yJLK0zKUdTTqREbZbycNHA83hewMjde5tF6ekrHu9bAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + }, + "peerDependencies": { + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", - "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-8.0.1.tgz", + "integrity": "sha512-AS9GlgKc43tJNRu7yOvLaTko4qmdOb+8M69uNS8i421WLO20eVez7LdG5khKdi8E0LIQpYzzzdGIrdXWnO753g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-8.0.1.tgz", + "integrity": "sha512-VzDIYwBlLCpV6mJfloRdJm8HmYnMqs7O+bGha8yfg2kP7jAdxeCw6yZBVBeaKKQUThtSU52iy+3lB7DhYsbOBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/plugin-transform-destructuring": "^8.0.1" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + }, + "peerDependencies": { + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", - "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-8.0.1.tgz", + "integrity": "sha512-DsZvUUklUmDQ7d2vp+VjqgUWD51mGxhZZ1FPdPP9Hcj0vsgGUKX+zEBGp/vzB1O5PZUxWT/Euq5fu39M9dm9wg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", - "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-8.0.1.tgz", + "integrity": "sha512-bFzznm46bvWGaTYKle3iolbBJ+oPBfUjwCPesxlFE3SQ7DaY9EHf/8Y5ZzrodKJi8JDdcAyaVWaDUSVyhULh0g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", - "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-8.0.1.tgz", + "integrity": "sha512-rpeXtgELjpIBQH/+YmyFlD9timPEVCyqY+TNednzoeoTYvXSBEeUvYnYE+BK8rB8m6hHiNK7aL9QWKhGifEJCw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", - "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-8.0.1.tgz", + "integrity": "sha512-H1L/JfPf3CqmubuaiZaquXKQ8MRs4YWSsgRllkTviM8TafcCNnlvc4/fJZ3rXP8HmFM+/Bg+TlsPehUI9BtDFA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", - "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-8.0.1.tgz", + "integrity": "sha512-Mowp8X0J6p7ZehLU82B5e65te2uuSeDHyxrEROwEAS2VKXNXssfw5ZMqhY7k9iXTsOv1Xs/49G3lDCj9Vvw8qQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", - "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-8.0.1.tgz", + "integrity": "sha512-ai7kfPRcfyUV1EszXoF1PvL3IuJoCuH08WSEPoRcJTWfZZ55VL/rcfvbVY16QLA3jjbzzSneQSoCtD3L6OyUjw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", - "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-8.0.1.tgz", + "integrity": "sha512-Emvtr5zkEGyCNAmt+qKD5EUh8G0RbxV9EZWrDdX0LuVy5tBq1B3fOIslvVF9aCJmpnwS/AvAT53b9LxAZyXlng==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", - "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-8.0.1.tgz", + "integrity": "sha512-3Axi9abnyGsm/hh6DsKPZ1Cr9fTtKqS7w0Ig5g12mU269YclpH8pV3xMln2vPLexXgUp6S6L+I06d9/YOLfRKA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", - "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-8.0.1.tgz", + "integrity": "sha512-FDdhET8y1YFDNRuoynqSf23WTzbBBpbIB2oRrlFX7YYm9uWtFvJDSD1r/epBSjfPkOjeaaLgRW9xNnt3JGx46A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", - "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-8.0.1.tgz", + "integrity": "sha512-PMuzulWrrzFNmY3lXSk/tV9NRb7y0eZZLJY4UEo2TKszroxvUZHAPPi+T9FDyrQhod+TQA+t+8/QYaaMpiEuhA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.29.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz", - "integrity": "sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-8.0.1.tgz", + "integrity": "sha512-0NEHanXmnFEnfT2dLKTXnu7m8GXFsnxRgteBC2aH21hYMBwAgxu5dcTdi/Eg+ToI1HbZe0CHwz4XRLgRNQhYoQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.29.0" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-validator-identifier": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", - "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-8.0.1.tgz", + "integrity": "sha512-XKTa2J2MdkmbVEeChq9f7Or0VYcsF0NyVBgytRyeN9F+J+ETAB2SHhfkG4toz/ssuU0i+h/QgJ6ddo5YakSQcA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-8.0.1.tgz", + "integrity": "sha512-zCHu+Jr2gTdJE48lN9SV/kXueCW2M79mKtKJc/ttfzzr/jvgdQdCd17RADMqFRQc/25MLxdtjTmlD0HSAMOlIQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", - "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-8.0.1.tgz", + "integrity": "sha512-QSQxVg1x4PuOuhWUs4Y9u+x9Y+ER8z6G3tC+bDLBzvoOrNLJrEBQLRnwrTP8e5klihAw6Z+e9X5RjdAKcAGapA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", - "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-8.0.1.tgz", + "integrity": "sha512-AgCJAmQLF7+PtsK79wJqr4xJ2StHCXlz7JL5CVFP4HejJx25Tk6yl1ZrXvi0cKh3VGDVnfVxefxnrpsBirgpyQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", - "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-8.0.1.tgz", + "integrity": "sha512-it2DmUyLIA1GQUXlFDEnI+/G89mTgxndnAiZYpW8xYR6LboblfirMqiWJeTna5uypQJg7viTT4D1iEURRtFcfw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", - "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-8.0.1.tgz", + "integrity": "sha512-VmxkDu6bBdbxRzqn6E93hYucug4OVa6svSO19W//vVzNUGAmQzk3QRyHyyEtfcjSLR3NWfRsWwVM9zExLmd+2w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.1" + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/plugin-transform-destructuring": "^8.0.1", + "@babel/plugin-transform-parameters": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", - "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-8.0.1.tgz", + "integrity": "sha512-fDkPXRTRKGm25bAq01q82UM4ypPqdVXCwphUUm4t1dL01fGIG0v8KRvT+4BjhMAtRxtPuI34t5Vs7yjRgs3ZgQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-replace-supers": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", - "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-8.0.1.tgz", + "integrity": "sha512-b2OQ74uGliyATcasTjxGy2O/86UI/n+EN4juB4EMfEwTi9j9uq70PuP0L8fW77vfRY66gO/YoTo/WbIdQ/Si1g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", - "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-8.0.1.tgz", + "integrity": "sha512-WtRS1c94lZGpGHxYLXMEWeoMVcuv8nkiyr8BTs6OYZv7N3Y9xVE8nbdFIl4lDJH6aH8/pLhqAQOL69d/WI9WdA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", - "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-8.0.1.tgz", + "integrity": "sha512-IIwRqroW0CYQwR6+3pnmu27z+H98poScWdnov8z6osumMeEsFxAFBBsDS2CFk2jFpPlGqVr89jK/HXO6i5DzxQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", - "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-8.0.1.tgz", + "integrity": "sha512-TrFCGcXaVDh6S5IRhmLSRTY9H80VTCMQWnZtzBRg4RWg3KCLmdmsmj4M15kZAPZfoPkWL/SJb4em3Py/vOiX8g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", - "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-8.0.1.tgz", + "integrity": "sha512-e+yfOqSYBZaf3PARpiQkjZrpWYgmcFLhK+1tevh2CpHR1O9/36IdyPnAZusESX5nzVV/XZTDAtQBRLa8HPT5Dw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", - "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-8.0.1.tgz", + "integrity": "sha512-Z/qx4cxUtYR1nt7XWRutObPxDks98fEYsjWbVeKEqZH6y3AGknmgzCqmHf2FHWZCl1DfoPeuJY+3hZ+35D+2tg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", - "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-8.0.1.tgz", + "integrity": "sha512-1WjCi/45Mn5e0uvz26FdvRe6bTAvN6WAtkHgIjl0w/LkBvrv4Y5bDR+8YY72r7cefXBfwYUXIHSoxQkrIfnjXQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "regenerator-transform": "^0.15.2" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-8.0.1.tgz", + "integrity": "sha512-02ITRDBesPdTYU0oShAzERwEPzozOUQSXlz3qrt8JGuhalBJQv9z5NjgHJPC9sS3Fsam8gDtfAEpBnqZwUIdjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + }, + "peerDependencies": { + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", - "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-8.0.1.tgz", + "integrity": "sha512-+aykZi7ZP3U84veqfJXm3HhPZGddWFi64g7jr0ni6tb1zel+1ey+SL+IRKPoZXFyFqvYEsoqrmx4PyEJRlHl/Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", - "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-8.0.1.tgz", + "integrity": "sha512-JddANd9yPVH8dYgVoNkqAH5BftnsDxFpG51Zas7sc6F3poz5QWcejHNGO8a/57IX5ByjGSzEmYk9Z7ZMa5MWaw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", - "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-8.0.1.tgz", + "integrity": "sha512-O9Bw9FyxlSw1SlMg3S82/GKNZ0x77RPbHezotEy1JTlIM/vk6WO8jW1iF+iTiKLOXNvi+b+LZ9t77Gi+Q0FhGg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", - "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-8.0.1.tgz", + "integrity": "sha512-IsVP6WrZZQdaG2zLmeKwWiI+ua2NB5L1+f77C2/8z2NCDz7uxlIA/lnwocYOJk9PXcOC2sZgRls3LN4XpNduzQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", - "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-8.0.1.tgz", + "integrity": "sha512-JXvtj5+BJA9Qv3prDzW2z2DkGTJNmG0BObTdUD03STiu1Jr4fNQkQy3hYZgPL46a2RjcuhwBMYf49BOuJ98gnA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", - "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-8.0.1.tgz", + "integrity": "sha512-+wJoxgxP2gtey0UMUOMhzMMji2XHO/Uu6MXUh/r5Yhc2jngKzK/wFxY2WNe4UCaRcMvCb4gcnB8wIgFXJsocXg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", - "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-8.0.1.tgz", + "integrity": "sha512-TAXJepIJ6vZphytTwcf+LuXi2M2ZWI43VCqNw+1ZZLPP/38Z1A8j4Mahvg8kqDgMOSM/cakk+hedTJCiw3jQuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", - "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-8.0.1.tgz", + "integrity": "sha512-zjBN9tSMSuomNDfurL69Gf7+v4D2t5uI1mSZaYJDo88SKpbduhCXqtxH7Tx66iCF6caWYwnBzSM0tnCozmQq5Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", - "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-8.0.1.tgz", + "integrity": "sha512-v0oO83cvT5lwbcIVRShpx4vaHD8AvM9IBowsQuTeP+kGmhh3recJQs33Bl6dlo3/2g9amlznLbFGn4VJbPCJqA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", - "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-8.0.1.tgz", + "integrity": "sha512-MlQeyS0K7gh0XNeLBMS/3Z07HjDOKhA7xm2L18GyxOXyiFHI9E+ZuQ4mFYmcLjluXsE/Wf6dABIqZvKpKw0Z3w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/preset-env": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.1.tgz", - "integrity": "sha512-CwCMz1Z28UHLI2iE+cbnWT2epPMV9bzzoBGM6A3mOS22VQd/1TPoWItV7S7iL9TkPmPEf5L/QzurmztyyDN9FA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.24.1", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.1", - "@babel/plugin-syntax-import-attributes": "^7.24.1", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.1", - "@babel/plugin-transform-async-generator-functions": "^7.24.1", - "@babel/plugin-transform-async-to-generator": "^7.24.1", - "@babel/plugin-transform-block-scoped-functions": "^7.24.1", - "@babel/plugin-transform-block-scoping": "^7.24.1", - "@babel/plugin-transform-class-properties": "^7.24.1", - "@babel/plugin-transform-class-static-block": "^7.24.1", - "@babel/plugin-transform-classes": "^7.24.1", - "@babel/plugin-transform-computed-properties": "^7.24.1", - "@babel/plugin-transform-destructuring": "^7.24.1", - "@babel/plugin-transform-dotall-regex": "^7.24.1", - "@babel/plugin-transform-duplicate-keys": "^7.24.1", - "@babel/plugin-transform-dynamic-import": "^7.24.1", - "@babel/plugin-transform-exponentiation-operator": "^7.24.1", - "@babel/plugin-transform-export-namespace-from": "^7.24.1", - "@babel/plugin-transform-for-of": "^7.24.1", - "@babel/plugin-transform-function-name": "^7.24.1", - "@babel/plugin-transform-json-strings": "^7.24.1", - "@babel/plugin-transform-literals": "^7.24.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", - "@babel/plugin-transform-member-expression-literals": "^7.24.1", - "@babel/plugin-transform-modules-amd": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@babel/plugin-transform-modules-systemjs": "^7.24.1", - "@babel/plugin-transform-modules-umd": "^7.24.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.24.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", - "@babel/plugin-transform-numeric-separator": "^7.24.1", - "@babel/plugin-transform-object-rest-spread": "^7.24.1", - "@babel/plugin-transform-object-super": "^7.24.1", - "@babel/plugin-transform-optional-catch-binding": "^7.24.1", - "@babel/plugin-transform-optional-chaining": "^7.24.1", - "@babel/plugin-transform-parameters": "^7.24.1", - "@babel/plugin-transform-private-methods": "^7.24.1", - "@babel/plugin-transform-private-property-in-object": "^7.24.1", - "@babel/plugin-transform-property-literals": "^7.24.1", - "@babel/plugin-transform-regenerator": "^7.24.1", - "@babel/plugin-transform-reserved-words": "^7.24.1", - "@babel/plugin-transform-shorthand-properties": "^7.24.1", - "@babel/plugin-transform-spread": "^7.24.1", - "@babel/plugin-transform-sticky-regex": "^7.24.1", - "@babel/plugin-transform-template-literals": "^7.24.1", - "@babel/plugin-transform-typeof-symbol": "^7.24.1", - "@babel/plugin-transform-unicode-escapes": "^7.24.1", - "@babel/plugin-transform-unicode-property-regex": "^7.24.1", - "@babel/plugin-transform-unicode-regex": "^7.24.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-8.0.1.tgz", + "integrity": "sha512-tiwl69ZQGIbPif28GK8vI/Nm1nYdP+UHXWRnqXl0fjfBS7DWmAs2XvlpVkZyZjVVDxcprcbzCnN93SbuSgz8WQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^8.0.0", + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-validator-option": "^8.0.0", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^8.0.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^8.0.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^8.0.1", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^8.0.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^8.0.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^8.0.1", + "@babel/plugin-transform-arrow-functions": "^8.0.1", + "@babel/plugin-transform-async-generator-functions": "^8.0.1", + "@babel/plugin-transform-async-to-generator": "^8.0.1", + "@babel/plugin-transform-block-scoped-functions": "^8.0.1", + "@babel/plugin-transform-block-scoping": "^8.0.1", + "@babel/plugin-transform-class-properties": "^8.0.1", + "@babel/plugin-transform-class-static-block": "^8.0.1", + "@babel/plugin-transform-classes": "^8.0.1", + "@babel/plugin-transform-computed-properties": "^8.0.1", + "@babel/plugin-transform-destructuring": "^8.0.1", + "@babel/plugin-transform-dotall-regex": "^8.0.1", + "@babel/plugin-transform-duplicate-keys": "^8.0.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^8.0.1", + "@babel/plugin-transform-dynamic-import": "^8.0.1", + "@babel/plugin-transform-explicit-resource-management": "^8.0.1", + "@babel/plugin-transform-exponentiation-operator": "^8.0.1", + "@babel/plugin-transform-export-namespace-from": "^8.0.1", + "@babel/plugin-transform-for-of": "^8.0.1", + "@babel/plugin-transform-function-name": "^8.0.1", + "@babel/plugin-transform-json-strings": "^8.0.1", + "@babel/plugin-transform-literals": "^8.0.1", + "@babel/plugin-transform-logical-assignment-operators": "^8.0.1", + "@babel/plugin-transform-member-expression-literals": "^8.0.1", + "@babel/plugin-transform-modules-amd": "^8.0.1", + "@babel/plugin-transform-modules-commonjs": "8.0.1", + "@babel/plugin-transform-modules-systemjs": "^8.0.1", + "@babel/plugin-transform-modules-umd": "^8.0.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^8.0.1", + "@babel/plugin-transform-new-target": "^8.0.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^8.0.1", + "@babel/plugin-transform-numeric-separator": "^8.0.1", + "@babel/plugin-transform-object-rest-spread": "^8.0.1", + "@babel/plugin-transform-object-super": "^8.0.1", + "@babel/plugin-transform-optional-catch-binding": "^8.0.1", + "@babel/plugin-transform-optional-chaining": "^8.0.1", + "@babel/plugin-transform-parameters": "^8.0.1", + "@babel/plugin-transform-private-methods": "^8.0.1", + "@babel/plugin-transform-private-property-in-object": "^8.0.1", + "@babel/plugin-transform-property-literals": "^8.0.1", + "@babel/plugin-transform-regenerator": "^8.0.1", + "@babel/plugin-transform-regexp-modifiers": "^8.0.1", + "@babel/plugin-transform-reserved-words": "^8.0.1", + "@babel/plugin-transform-shorthand-properties": "^8.0.1", + "@babel/plugin-transform-spread": "^8.0.1", + "@babel/plugin-transform-sticky-regex": "^8.0.1", + "@babel/plugin-transform-template-literals": "^8.0.1", + "@babel/plugin-transform-typeof-symbol": "^8.0.1", + "@babel/plugin-transform-unicode-escapes": "^8.0.1", + "@babel/plugin-transform-unicode-property-regex": "^8.0.1", + "@babel/plugin-transform-unicode-regex": "^8.0.1", + "@babel/plugin-transform-unicode-sets-regex": "^8.0.1", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.1", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" + "babel-plugin-polyfill-corejs3": "^1.0.0-rc.2", + "core-js-compat": "^3.48.0", + "semver": "^7.7.3" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/preset-modules": { @@ -1635,6 +1965,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -1644,55 +1975,121 @@ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, - "node_modules/@babel/runtime": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", - "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "node_modules/@babel/preset-modules/node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "node_modules/@babel/traverse": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-8.0.0.tgz", + "integrity": "sha512-bxTj/W2VclGE6CctlfQOpxg8MPDzXArRqkOBePw8EHfebcjF7fETWSS3BriEECo+UiU/Yblq+xUtSImFu7cTbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/code-frame": "^8.0.0", + "@babel/generator": "^8.0.0", + "@babel/helper-globals": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/template": "^8.0.0", + "@babel/types": "^8.0.0", + "obug": "^2.1.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "node_modules/@babel/traverse/node_modules/@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^8.0.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, + "node_modules/@babel/traverse/node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@babel/types": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", @@ -1815,6 +2212,20 @@ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true }, + "node_modules/@types/gensync": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/gensync/-/gensync-1.0.5.tgz", + "integrity": "sha512-MbsRCT7mTikHwKZ0X+LVUTLRrZZRLipTuXEO9qOYO+zmjMVk81axyClMROf6uoPD9MRVu46bx8zoR0Ad9q3NAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@types/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -2196,59 +2607,111 @@ } }, "node_modules/babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.1.1.tgz", + "integrity": "sha512-JwKSzk2kjIe7mgPK+/lyZ2QAaJcpahNAdM+hgR2HI8D0OJVkdj8Rl6J3kaLYki9pwF7P2iWnD8qVv80Lq1ABtg==", "dev": true, + "license": "MIT", "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" + "find-up": "^5.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" }, "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" + "@babel/core": "^7.12.0 || ^8.0.0-beta.1", + "@rspack/core": "^1.0.0 || ^2.0.0-0", + "webpack": ">=5.61.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", - "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", + "node_modules/babel-loader/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.1", - "semver": "^6.3.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.1.tgz", - "integrity": "sha512-XiFei6VGwM4ii6nKC1VCenGD8Z4bjiNYcrdkM8oqM3pbuemmyb8biMgrDX1ZHSbIuMLXatM6JJ/StPYIuTl6MQ==", + "node_modules/babel-loader/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.0" + "p-locate": "^5.0.0" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", - "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", + "node_modules/babel-loader/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-1.0.0-rc.2.tgz", + "integrity": "sha512-CANdCTyNm6Ds/kevG0Rbby/dvRPTvA7K5DLTiUrWBeRMnqp6Okg8idCw5fM3AdbAcxtR23Y9na3WOJRZ3i1hNA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1" + "@babel/helper-define-polyfill-provider": "^1.0.0-rc.2", + "core-js-compat": "^3.48.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@babel/core": "^7.4.0 || ^8.0.0-rc.3" } }, "node_modules/balanced-match": { @@ -2741,12 +3204,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true - }, "node_modules/compare-angle": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/compare-angle/-/compare-angle-1.0.1.tgz", @@ -2828,12 +3285,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", - "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.23.0" + "browserslist": "^4.28.1" }, "funding": { "type": "opencollective", @@ -2939,23 +3397,6 @@ "resolved": "https://registry.npmjs.org/cubic-hermite/-/cubic-hermite-1.0.0.tgz", "integrity": "sha1-hOOy8nKzFFToOTuZu2rtRRaMFOU=" }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -3131,6 +3572,16 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "node_modules/empathic": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.1.tgz", + "integrity": "sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -3381,107 +3832,6 @@ "cubic-hermite": "^1.0.0" } }, - "node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "dev": true, - "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", - "dev": true, - "dependencies": { - "find-up": "^6.3.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -3965,15 +4315,6 @@ "dev": true, "license": "BSD-2-Clause" }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/glsl-inject-defines": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz", @@ -4382,6 +4723,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/incremental-convex-hull": { "version": "1.1.0", "resolved": "git+ssh://git@github.com/plotly/incremental-convex-hull.git#352d9e73861913695fd4e1a4c6ad79898c0c8268", @@ -4620,13 +4972,6 @@ "node": ">= 10.13.0" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -4719,15 +5064,17 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", + "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", "dev": true, - "dependencies": { - "yallist": "^3.0.2" + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, "node_modules/map-limit": { @@ -4924,12 +5271,6 @@ "to-px": "^1.0.1" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/multipipe": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.3.1.tgz", @@ -5174,19 +5515,6 @@ "node": ">= 6" } }, - "node_modules/node-stdlib-browser/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -5283,6 +5611,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/obug": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz", + "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT", + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5708,13 +6050,15 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -5722,53 +6066,44 @@ "node": ">=4" } }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "unicode-match-property-value-ecmascript": "^2.2.1" }, "engines": { "node": ">=4" } }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz", + "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~0.5.0" + "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", @@ -6002,12 +6337,16 @@ } }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz", + "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/set-function-length": { @@ -6655,10 +6994,11 @@ "dev": true }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -6668,6 +7008,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -6677,19 +7018,21 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7039,19 +7382,14 @@ "node": ">=0.4" } }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, "node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12.20" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7064,256 +7402,441 @@ } }, "dependencies": { - "@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - } - }, "@babel/compat-data": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", - "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-8.0.0.tgz", + "integrity": "sha512-DOjnob/cXOUgDOozCDeq/aK2p5y8dUIVdf6tNhEV1HQRd6I8aQ4f4fbtHRVEvb6lP3BGomrKHiS8ICAASSVQSw==", "dev": true }, "@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-8.0.1.tgz", + "integrity": "sha512-5FgxM4dLQpMJHSiVATk8foW263dVHQHBVpXYiimNECVWG01f4nFyEbQixeT6Mwvg7TayREJ2gpKl3o2RoMdnqw==", + "dev": true, + "requires": { + "@babel/code-frame": "^8.0.0", + "@babel/generator": "^8.0.0", + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helpers": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/template": "^8.0.0", + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0", + "@types/gensync": "^1.0.5", "convert-source-map": "^2.0.0", - "debug": "^4.1.0", + "empathic": "^2.0.1", "gensync": "^1.0.0-beta.2", + "import-meta-resolve": "^4.2.0", "json5": "^2.2.3", - "semver": "^6.3.1" + "obug": "^2.1.1", + "semver": "^7.7.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" + } + }, + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "requires": { + "@babel/types": "^8.0.0" + } + }, + "@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" + } + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + }, + "js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true + } } }, "@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.0.tgz", + "integrity": "sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==", "dev": true, "requires": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", + "@types/jsesc": "^2.5.0", "jsesc": "^3.0.2" + }, + "dependencies": { + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "requires": { + "@babel/types": "^8.0.0" + } + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + } } }, "@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-8.0.0.tgz", + "integrity": "sha512-NSpMkMsvvZqzThJ0p1B02cbtA2ObEyfBvq950bmNkyxsxvcxwhvvCB036rKhlEnuBBo30bOrk13u3FzlKSoRrw==", "dev": true, "requires": { - "@babel/types": "^7.22.15" + "@babel/types": "^8.0.0" + }, + "dependencies": { + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + } } }, "@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-8.0.0.tgz", + "integrity": "sha512-JwculLABZvyPvyLBpwU/E/IbH2uM3mnxNtIJpxnIfb24y1PrdVxK5Dqjle4DpgqpGRnwgC7G8IkzPdSXZrO1Ew==", "dev": true, "requires": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@babel/compat-data": "^8.0.0", + "@babel/helper-validator-option": "^8.0.0", + "browserslist": "^4.24.0", + "lru-cache": "^11.0.0", + "semver": "^7.7.3" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz", - "integrity": "sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-8.0.1.tgz", + "integrity": "sha512-++t3ZktzlLmASAxIlxeXQK9Z2YwUafYGYcvGBFevqOqt16HozVHStUoQvWD09fzAZOb/uJGpUTBuGK41AJAuOA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-member-expression-to-functions": "^8.0.0", + "@babel/helper-optimise-call-expression": "^8.0.0", + "@babel/helper-replace-supers": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0", + "@babel/traverse": "^8.0.0", + "semver": "^7.7.3" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-8.0.1.tgz", + "integrity": "sha512-PydTbcVTiIfVweHMeY1u3MslaD/ZzvnaTNhJp+7ghofelLWshF66Ckc/ZsjStfvRQIKQ4uVG0yEJucyDtyrWgw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" + "@babel/helper-annotate-as-pure": "^8.0.0", + "regexpu-core": "^6.3.1", + "semver": "^7.7.3" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", - "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-1.0.0-rc.2.tgz", + "integrity": "sha512-AWy1lGqBObYp6gYE7TCVnjmCMstbTLEVevkzw/wHjD43XZ8HqOOe+PAg2zjROFl9qEjF6LH+QLxSrXGuQqLwBA==", "dev": true, "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/helper-compilation-targets": "^8.0.0-rc.3 <8.0.0", + "@babel/helper-plugin-utils": "^8.0.0-rc.3 <8.0.0", + "lodash.debounce": "^4.0.8" + }, + "dependencies": { + "@babel/helper-compilation-targets": { + "version": "8.0.0-rc.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-8.0.0-rc.6.tgz", + "integrity": "sha512-jqQD45/yUSy63U8zs9hE5FMXS8J1TLAI/NTMx76C6xWO021e13gJACQvuGmEF7syloC39LkkKwhqtAbMku1rwg==", + "dev": true, + "requires": { + "@babel/compat-data": "^8.0.0-rc.6", + "@babel/helper-validator-option": "^8.0.0-rc.6", + "browserslist": "^4.24.0", + "lru-cache": "^7.14.1", + "semver": "^7.7.3" + } + }, + "@babel/helper-plugin-utils": { + "version": "8.0.0-rc.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-8.0.0-rc.6.tgz", + "integrity": "sha512-sLAjvuIcjzUQJR+CoHwU0JA4i706o71bCJtF+W9sc4KuHK3LCIJCjbKRuzbVn1eubUc66uAEZdBNWSqhLpwp2g==", + "dev": true, + "requires": {} + }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true + } } }, "@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-8.0.0.tgz", + "integrity": "sha512-lLozHOM6sWWlxNo8CYqHy4MBZeTvHXNgVPBfPOGsjPKUzHC2Az9QwB6gxdQmpwHl6GlQtbGgS+lj5887guDiLw==", "dev": true }, "@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-8.0.0.tgz", + "integrity": "sha512-xkXrMbtk87Gk7+oKBVmBc6EORg/Qwx++AHESldmHkpvG8wgccdhJJFwrzqlF382Fk8wfXhJHWE/g/43QvEGNPQ==", "dev": true, "requires": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" + }, + "dependencies": { + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + } } }, "@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-8.0.0.tgz", + "integrity": "sha512-NZ7mSS93o4ndX4KrbD7W8Sf3QT8Qe24PrnFyUcuOPDzK6faqDFKjY9RG7he7+I7FdiQ4llpnosFqzrXa+Vy3Ew==", "dev": true, "requires": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" + }, + "dependencies": { + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + } } }, "@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-8.0.1.tgz", + "integrity": "sha512-UgAhl1kqiW5ciE0yCXqqvnb4H2n3IELJ7lIIQRezwDPilPEZX5i+Rvbja9MFTkwUn2biEiSMeV31aUzR4Lwakw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" + "@babel/helper-module-imports": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0", + "@babel/traverse": "^8.0.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-8.0.0.tgz", + "integrity": "sha512-3W6satvtPuCUkUx63S2jMoW9EQNYkADgs1HTfufmL7gCmAulHMKupA/12WNz4A0GMMFn/YnWWwqOT9IZrJHQjg==", "dev": true, "requires": { - "@babel/types": "^7.22.5" + "@babel/types": "^8.0.0" + }, + "dependencies": { + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + } } }, "@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", - "dev": true + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-8.0.1.tgz", + "integrity": "sha512-3PKFgjTyPlhFhorfP+SjKQxLViIL++zWjFOO4hGriYU+Bsm983DxEM1JmDRJVWXV0O9npu+xXRqz7Pbd3mh70g==", + "dev": true, + "requires": {} }, "@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-8.0.1.tgz", + "integrity": "sha512-baAKuLEMmu6BCSY3tuiU7qglM1qOZt6F1SrFScA241oNqksxkxfEZEKztlGRmoVns9AQ5UgArH7RsUEjxWnzgQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-wrap-function": "^8.0.0", + "@babel/traverse": "^8.0.0" } }, "@babel/helper-replace-supers": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", - "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5" - } - }, - "@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-8.0.1.tgz", + "integrity": "sha512-B1SZADIcy3tmH8CmWvj4SHi/oAPom4UL3uknTc2QRNsPVLFk/sPnZvQL/8kj7Y5omvjMqie0vklvs6XM4OLW5Q==", "dev": true, "requires": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/helper-member-expression-to-functions": "^8.0.0", + "@babel/helper-optimise-call-expression": "^8.0.0", + "@babel/traverse": "^8.0.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-8.0.0.tgz", + "integrity": "sha512-xmCA9kP3IhySsqhzwIdWGlDN/1A4cCKNBO/uwZx/3YzmDoMePwno2Q5/Bq0q+tYaKbeF940YiKV/kaW8Mzvpjw==", "dev": true, "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" + }, + "dependencies": { + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + } } }, "@babel/helper-string-parser": { @@ -7329,810 +7852,782 @@ "dev": true }, "@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" - } - }, - "@babel/helpers": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", - "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", - "dev": true, - "requires": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" - } - }, - "@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", - "dev": true, - "requires": { - "@babel/types": "^7.29.0" - } - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", - "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.0" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", - "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.24.1" - } - }, - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", - "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "requires": {} - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", - "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.0" - } - }, - "@babel/plugin-syntax-import-attributes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", - "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.0" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-8.0.0.tgz", + "integrity": "sha512-U4Dybxh4WESWHt5XhBeExi4DrY0/DNK1aHpQbsrQXCUbFHuMweT0TpLEWKvaraV2Y6fS+ZXunsZ8zIuZIgvF2Q==", + "dev": true }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "@babel/helper-wrap-function": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-8.0.0.tgz", + "integrity": "sha512-Qpm8+wi5xfDkBfollanwriCcKniFfBmMmaKB01GVM6VGzKXo1fdxosZp04qEr5HM+LKhwr3hG1yRy8+ORsficA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/template": "^8.0.0", + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" + } + }, + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "requires": { + "@babel/types": "^8.0.0" + } + }, + "@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" + } + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + }, + "js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true + } } }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "@babel/helpers": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-8.0.0.tgz", + "integrity": "sha512-wfbi91pM3py96oIiJEz7qIpyXDytgr9zQC1HEWwlGNVRAEmItuU/0a41ZUKu1sJGyhhOIpc4t5vk4PYzt8wpsg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/template": "^8.0.0", + "@babel/types": "^8.0.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" + } + }, + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "requires": { + "@babel/types": "^8.0.0" + } + }, + "@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" + } + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + }, + "js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true + } } }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-8.0.1.tgz", + "integrity": "sha512-Ytgjjne4RnG3Oig7ik+NfY4ebRY30BPptVkkyu1f72eINJXRM3/bkU++tIc5aPvyLmo4KH20avq0xJ2o+9aEnw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-8.0.1.tgz", + "integrity": "sha512-X7pAMBhuKluA7UfwZNvKN0XVVu/AGeo84Z75eJl85rcb8J2aBzLK92btahM1X5h0oi0QIrbe0qIMA/0+4Buk7w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-8.0.1.tgz", + "integrity": "sha512-DJviKTxYfH0hFwnMiW4dnPyMGzS3Hrr4zUfXl1zwQ0QiGlGlNYklLoPSYEQr8S7nau0/K7NdQjTh0qbYuyFjCA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-8.0.1.tgz", + "integrity": "sha512-DmR/N+B9+4PbURFj4+zdnWj49/PFAnK2bn8+E4ZAmwn3J5QCxnbG7Ep6aRfz9M8Aw+rBro0kIJQycvzFpl4buQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" } }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-8.0.1.tgz", + "integrity": "sha512-x8bi0LFVD2xkULjfNn+hCMg16yAFHAM9fS/ThSFeYBi+0MP9K6qcY2BZb4urUwC7PYtEy5wPe6TKjOEjXrCGFA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0", + "@babel/plugin-transform-optional-chaining": "^8.0.1" } }, - "@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-8.0.1.tgz", + "integrity": "sha512-P8+RN2n7ts2s1vnE+lXdHYf+dhnmcGSen/kWzBsVluT9Sey5AqmcRXYWlHqgQxaNlKTD5YMa1tf5z4d1v8W88w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", - "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-8.0.1.tgz", + "integrity": "sha512-o/gr7kRlq3PKLLuYth4udOsrC7geBerti+QtwPeyxMOsEQO1d8kDHqk9r2PtMx2y9i8FG7tzyTerfv1yMLSMsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.1.tgz", - "integrity": "sha512-OTkLJM0OtmzcpOgF7MREERUCdCnCBtBsq3vVFbuq/RKMK0/jdYqdMexWi3zNs7Nzd95ase65MbTGrpFJflOb6A==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-8.0.1.tgz", + "integrity": "sha512-kqnSMF1YHBzuiQrl68675i5Ma1oljvo+SJsNEZFZVBu5BUrVIZm9KId3ui2PdtLK2sv2zM8sJnjPDfgLxQlEqQ==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-remap-async-to-generator": "^8.0.1", + "@babel/traverse": "^8.0.0" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", - "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-8.0.1.tgz", + "integrity": "sha512-e1jmmEU4p2Lx64sA1+EF8e8/RxPuegzbXcEbmFp5alDyLE+f2ViUpZ77bRWMXzihTwgVVmn/TOpqDbAuS5g1Ew==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-remap-async-to-generator": "^8.0.1" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", - "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-8.0.1.tgz", + "integrity": "sha512-0V97/gcf7LIgPieEiK1YT0eXa18XJFSLOTZjzEZhA9SJIqZhD/IwGUrCitBzXSmnGCP7hchwC6svHtJ/Eidcpg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz", - "integrity": "sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-8.0.1.tgz", + "integrity": "sha512-HxiQvKsSCs2jOmMhjDrooHaZYOy6W8bqwXp/zjdgPjsNrda6tK9/CH3a/cVIeg6ge3hSS02ALqvqgIo4rTsuSg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-class-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", - "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-8.0.1.tgz", + "integrity": "sha512-tORnYiVhIHnKj90TgbSZXrO24f9oEpA6MgFxpIDSKKlHv7AzBIRhkMlYevanueLNYaQXqZWarfCgXM4bWTfNiw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-class-static-block": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz", - "integrity": "sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-8.0.1.tgz", + "integrity": "sha512-NEVK+L0Le8h8tJ+IK0CGS5y9Yi1ZHxLj6M5PeanhMFuq9aSo0XI+Wtmbuyop6fTNukOm7ORNntf/kwid891vqQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-classes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", - "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-8.0.1.tgz", + "integrity": "sha512-phwyCES8kIMAdVOFw25ztmgAvkl2G+TvUv7azUYyrlR1Qoo3eLJC/MU3MGUKFZ4BWtsJ1NTJM1lKRLzKbswg7w==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-globals": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-replace-supers": "^8.0.1", + "@babel/traverse": "^8.0.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", - "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-8.0.1.tgz", + "integrity": "sha512-i4l3OGLO8DUDcwdnyraOvILbhqdUf4QgfzhVxSOSzRy49XKXrY7pwaSg9gDSKmhZfNPrEMciBSJSciQh/CjB1A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/template": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-destructuring": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", - "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-8.0.1.tgz", + "integrity": "sha512-RtR8uLDl0QcCmqMNIkM8gmDeYZ3rS0ZH+sa+I6sfc09yFoqfp9AEPgBstq9KyfVb0lFCVSRFfJXCI70FIl5ccw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", - "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-8.0.1.tgz", + "integrity": "sha512-czOUoSaZljJ92yu+bYlXqb/UBN8K9daNCob/B6/7nthSvfGP6YhCnfqD64XWfyb2dN4ypxALNplApoJrsMd4fw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", - "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-8.0.1.tgz", + "integrity": "sha512-kNnVLkxFUEcTtCyB5PFVQ5Xoy88Bk1lU/ZgDu97CW8eNhRH2Wsiy8Sq5l5dFnwtIUYjzsXHU77jUy1W5AtGSIw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^8.0.1" + } + }, + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-8.0.1.tgz", + "integrity": "sha512-Tv43P47o6fuHgBL7HLHQg3WKXohW9CEUGjLtnCDW27yJLK0zKUdTTqREbZbycNHA83hewMjde5tF6ekrHu9bAA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-dynamic-import": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", - "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-8.0.1.tgz", + "integrity": "sha512-AS9GlgKc43tJNRu7yOvLaTko4qmdOb+8M69uNS8i421WLO20eVez7LdG5khKdi8E0LIQpYzzzdGIrdXWnO753g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^8.0.1" + } + }, + "@babel/plugin-transform-explicit-resource-management": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-8.0.1.tgz", + "integrity": "sha512-VzDIYwBlLCpV6mJfloRdJm8HmYnMqs7O+bGha8yfg2kP7jAdxeCw6yZBVBeaKKQUThtSU52iy+3lB7DhYsbOBA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/plugin-transform-destructuring": "^8.0.1" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", - "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-8.0.1.tgz", + "integrity": "sha512-DsZvUUklUmDQ7d2vp+VjqgUWD51mGxhZZ1FPdPP9Hcj0vsgGUKX+zEBGp/vzB1O5PZUxWT/Euq5fu39M9dm9wg==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-export-namespace-from": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", - "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-8.0.1.tgz", + "integrity": "sha512-bFzznm46bvWGaTYKle3iolbBJ+oPBfUjwCPesxlFE3SQ7DaY9EHf/8Y5ZzrodKJi8JDdcAyaVWaDUSVyhULh0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-for-of": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", - "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-8.0.1.tgz", + "integrity": "sha512-rpeXtgELjpIBQH/+YmyFlD9timPEVCyqY+TNednzoeoTYvXSBEeUvYnYE+BK8rB8m6hHiNK7aL9QWKhGifEJCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" } }, "@babel/plugin-transform-function-name": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", - "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-8.0.1.tgz", + "integrity": "sha512-H1L/JfPf3CqmubuaiZaquXKQ8MRs4YWSsgRllkTviM8TafcCNnlvc4/fJZ3rXP8HmFM+/Bg+TlsPehUI9BtDFA==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-json-strings": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", - "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-8.0.1.tgz", + "integrity": "sha512-Mowp8X0J6p7ZehLU82B5e65te2uuSeDHyxrEROwEAS2VKXNXssfw5ZMqhY7k9iXTsOv1Xs/49G3lDCj9Vvw8qQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", - "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-8.0.1.tgz", + "integrity": "sha512-ai7kfPRcfyUV1EszXoF1PvL3IuJoCuH08WSEPoRcJTWfZZ55VL/rcfvbVY16QLA3jjbzzSneQSoCtD3L6OyUjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", - "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-8.0.1.tgz", + "integrity": "sha512-Emvtr5zkEGyCNAmt+qKD5EUh8G0RbxV9EZWrDdX0LuVy5tBq1B3fOIslvVF9aCJmpnwS/AvAT53b9LxAZyXlng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", - "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-8.0.1.tgz", + "integrity": "sha512-3Axi9abnyGsm/hh6DsKPZ1Cr9fTtKqS7w0Ig5g12mU269YclpH8pV3xMln2vPLexXgUp6S6L+I06d9/YOLfRKA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", - "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-8.0.1.tgz", + "integrity": "sha512-FDdhET8y1YFDNRuoynqSf23WTzbBBpbIB2oRrlFX7YYm9uWtFvJDSD1r/epBSjfPkOjeaaLgRW9xNnt3JGx46A==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", - "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-8.0.1.tgz", + "integrity": "sha512-PMuzulWrrzFNmY3lXSk/tV9NRb7y0eZZLJY4UEo2TKszroxvUZHAPPi+T9FDyrQhod+TQA+t+8/QYaaMpiEuhA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.29.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz", - "integrity": "sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-8.0.1.tgz", + "integrity": "sha512-0NEHanXmnFEnfT2dLKTXnu7m8GXFsnxRgteBC2aH21hYMBwAgxu5dcTdi/Eg+ToI1HbZe0CHwz4XRLgRNQhYoQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.29.0" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-validator-identifier": "^8.0.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", - "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-8.0.1.tgz", + "integrity": "sha512-XKTa2J2MdkmbVEeChq9f7Or0VYcsF0NyVBgytRyeN9F+J+ETAB2SHhfkG4toz/ssuU0i+h/QgJ6ddo5YakSQcA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-8.0.1.tgz", + "integrity": "sha512-zCHu+Jr2gTdJE48lN9SV/kXueCW2M79mKtKJc/ttfzzr/jvgdQdCd17RADMqFRQc/25MLxdtjTmlD0HSAMOlIQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", - "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-8.0.1.tgz", + "integrity": "sha512-QSQxVg1x4PuOuhWUs4Y9u+x9Y+ER8z6G3tC+bDLBzvoOrNLJrEBQLRnwrTP8e5klihAw6Z+e9X5RjdAKcAGapA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", - "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-8.0.1.tgz", + "integrity": "sha512-AgCJAmQLF7+PtsK79wJqr4xJ2StHCXlz7JL5CVFP4HejJx25Tk6yl1ZrXvi0cKh3VGDVnfVxefxnrpsBirgpyQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-numeric-separator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", - "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-8.0.1.tgz", + "integrity": "sha512-it2DmUyLIA1GQUXlFDEnI+/G89mTgxndnAiZYpW8xYR6LboblfirMqiWJeTna5uypQJg7viTT4D1iEURRtFcfw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-object-rest-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", - "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-8.0.1.tgz", + "integrity": "sha512-VmxkDu6bBdbxRzqn6E93hYucug4OVa6svSO19W//vVzNUGAmQzk3QRyHyyEtfcjSLR3NWfRsWwVM9zExLmd+2w==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.1" + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/plugin-transform-destructuring": "^8.0.1", + "@babel/plugin-transform-parameters": "^8.0.1" } }, "@babel/plugin-transform-object-super": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", - "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-8.0.1.tgz", + "integrity": "sha512-fDkPXRTRKGm25bAq01q82UM4ypPqdVXCwphUUm4t1dL01fGIG0v8KRvT+4BjhMAtRxtPuI34t5Vs7yjRgs3ZgQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-replace-supers": "^8.0.1" } }, "@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", - "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-8.0.1.tgz", + "integrity": "sha512-b2OQ74uGliyATcasTjxGy2O/86UI/n+EN4juB4EMfEwTi9j9uq70PuP0L8fW77vfRY66gO/YoTo/WbIdQ/Si1g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", - "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-8.0.1.tgz", + "integrity": "sha512-WtRS1c94lZGpGHxYLXMEWeoMVcuv8nkiyr8BTs6OYZv7N3Y9xVE8nbdFIl4lDJH6aH8/pLhqAQOL69d/WI9WdA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", - "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-8.0.1.tgz", + "integrity": "sha512-IIwRqroW0CYQwR6+3pnmu27z+H98poScWdnov8z6osumMeEsFxAFBBsDS2CFk2jFpPlGqVr89jK/HXO6i5DzxQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-private-methods": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", - "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-8.0.1.tgz", + "integrity": "sha512-TrFCGcXaVDh6S5IRhmLSRTY9H80VTCMQWnZtzBRg4RWg3KCLmdmsmj4M15kZAPZfoPkWL/SJb4em3Py/vOiX8g==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-private-property-in-object": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", - "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-8.0.1.tgz", + "integrity": "sha512-e+yfOqSYBZaf3PARpiQkjZrpWYgmcFLhK+1tevh2CpHR1O9/36IdyPnAZusESX5nzVV/XZTDAtQBRLa8HPT5Dw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-property-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", - "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-8.0.1.tgz", + "integrity": "sha512-Z/qx4cxUtYR1nt7XWRutObPxDks98fEYsjWbVeKEqZH6y3AGknmgzCqmHf2FHWZCl1DfoPeuJY+3hZ+35D+2tg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-regenerator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", - "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-8.0.1.tgz", + "integrity": "sha512-1WjCi/45Mn5e0uvz26FdvRe6bTAvN6WAtkHgIjl0w/LkBvrv4Y5bDR+8YY72r7cefXBfwYUXIHSoxQkrIfnjXQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^8.0.1" + } + }, + "@babel/plugin-transform-regexp-modifiers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-8.0.1.tgz", + "integrity": "sha512-02ITRDBesPdTYU0oShAzERwEPzozOUQSXlz3qrt8JGuhalBJQv9z5NjgHJPC9sS3Fsam8gDtfAEpBnqZwUIdjQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "regenerator-transform": "^0.15.2" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", - "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-8.0.1.tgz", + "integrity": "sha512-+aykZi7ZP3U84veqfJXm3HhPZGddWFi64g7jr0ni6tb1zel+1ey+SL+IRKPoZXFyFqvYEsoqrmx4PyEJRlHl/Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", - "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-8.0.1.tgz", + "integrity": "sha512-JddANd9yPVH8dYgVoNkqAH5BftnsDxFpG51Zas7sc6F3poz5QWcejHNGO8a/57IX5ByjGSzEmYk9Z7ZMa5MWaw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", - "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-8.0.1.tgz", + "integrity": "sha512-O9Bw9FyxlSw1SlMg3S82/GKNZ0x77RPbHezotEy1JTlIM/vk6WO8jW1iF+iTiKLOXNvi+b+LZ9t77Gi+Q0FhGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", - "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-8.0.1.tgz", + "integrity": "sha512-IsVP6WrZZQdaG2zLmeKwWiI+ua2NB5L1+f77C2/8z2NCDz7uxlIA/lnwocYOJk9PXcOC2sZgRls3LN4XpNduzQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-template-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", - "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-8.0.1.tgz", + "integrity": "sha512-JXvtj5+BJA9Qv3prDzW2z2DkGTJNmG0BObTdUD03STiu1Jr4fNQkQy3hYZgPL46a2RjcuhwBMYf49BOuJ98gnA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", - "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-8.0.1.tgz", + "integrity": "sha512-+wJoxgxP2gtey0UMUOMhzMMji2XHO/Uu6MXUh/r5Yhc2jngKzK/wFxY2WNe4UCaRcMvCb4gcnB8wIgFXJsocXg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", - "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-8.0.1.tgz", + "integrity": "sha512-TAXJepIJ6vZphytTwcf+LuXi2M2ZWI43VCqNw+1ZZLPP/38Z1A8j4Mahvg8kqDgMOSM/cakk+hedTJCiw3jQuQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", - "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-8.0.1.tgz", + "integrity": "sha512-zjBN9tSMSuomNDfurL69Gf7+v4D2t5uI1mSZaYJDo88SKpbduhCXqtxH7Tx66iCF6caWYwnBzSM0tnCozmQq5Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", - "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-8.0.1.tgz", + "integrity": "sha512-v0oO83cvT5lwbcIVRShpx4vaHD8AvM9IBowsQuTeP+kGmhh3recJQs33Bl6dlo3/2g9amlznLbFGn4VJbPCJqA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", - "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-8.0.1.tgz", + "integrity": "sha512-MlQeyS0K7gh0XNeLBMS/3Z07HjDOKhA7xm2L18GyxOXyiFHI9E+ZuQ4mFYmcLjluXsE/Wf6dABIqZvKpKw0Z3w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/preset-env": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.1.tgz", - "integrity": "sha512-CwCMz1Z28UHLI2iE+cbnWT2epPMV9bzzoBGM6A3mOS22VQd/1TPoWItV7S7iL9TkPmPEf5L/QzurmztyyDN9FA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.24.1", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.1", - "@babel/plugin-syntax-import-attributes": "^7.24.1", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.1", - "@babel/plugin-transform-async-generator-functions": "^7.24.1", - "@babel/plugin-transform-async-to-generator": "^7.24.1", - "@babel/plugin-transform-block-scoped-functions": "^7.24.1", - "@babel/plugin-transform-block-scoping": "^7.24.1", - "@babel/plugin-transform-class-properties": "^7.24.1", - "@babel/plugin-transform-class-static-block": "^7.24.1", - "@babel/plugin-transform-classes": "^7.24.1", - "@babel/plugin-transform-computed-properties": "^7.24.1", - "@babel/plugin-transform-destructuring": "^7.24.1", - "@babel/plugin-transform-dotall-regex": "^7.24.1", - "@babel/plugin-transform-duplicate-keys": "^7.24.1", - "@babel/plugin-transform-dynamic-import": "^7.24.1", - "@babel/plugin-transform-exponentiation-operator": "^7.24.1", - "@babel/plugin-transform-export-namespace-from": "^7.24.1", - "@babel/plugin-transform-for-of": "^7.24.1", - "@babel/plugin-transform-function-name": "^7.24.1", - "@babel/plugin-transform-json-strings": "^7.24.1", - "@babel/plugin-transform-literals": "^7.24.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", - "@babel/plugin-transform-member-expression-literals": "^7.24.1", - "@babel/plugin-transform-modules-amd": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@babel/plugin-transform-modules-systemjs": "^7.24.1", - "@babel/plugin-transform-modules-umd": "^7.24.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.24.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", - "@babel/plugin-transform-numeric-separator": "^7.24.1", - "@babel/plugin-transform-object-rest-spread": "^7.24.1", - "@babel/plugin-transform-object-super": "^7.24.1", - "@babel/plugin-transform-optional-catch-binding": "^7.24.1", - "@babel/plugin-transform-optional-chaining": "^7.24.1", - "@babel/plugin-transform-parameters": "^7.24.1", - "@babel/plugin-transform-private-methods": "^7.24.1", - "@babel/plugin-transform-private-property-in-object": "^7.24.1", - "@babel/plugin-transform-property-literals": "^7.24.1", - "@babel/plugin-transform-regenerator": "^7.24.1", - "@babel/plugin-transform-reserved-words": "^7.24.1", - "@babel/plugin-transform-shorthand-properties": "^7.24.1", - "@babel/plugin-transform-spread": "^7.24.1", - "@babel/plugin-transform-sticky-regex": "^7.24.1", - "@babel/plugin-transform-template-literals": "^7.24.1", - "@babel/plugin-transform-typeof-symbol": "^7.24.1", - "@babel/plugin-transform-unicode-escapes": "^7.24.1", - "@babel/plugin-transform-unicode-property-regex": "^7.24.1", - "@babel/plugin-transform-unicode-regex": "^7.24.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-8.0.1.tgz", + "integrity": "sha512-tiwl69ZQGIbPif28GK8vI/Nm1nYdP+UHXWRnqXl0fjfBS7DWmAs2XvlpVkZyZjVVDxcprcbzCnN93SbuSgz8WQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^8.0.0", + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-validator-option": "^8.0.0", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^8.0.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^8.0.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^8.0.1", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^8.0.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^8.0.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^8.0.1", + "@babel/plugin-transform-arrow-functions": "^8.0.1", + "@babel/plugin-transform-async-generator-functions": "^8.0.1", + "@babel/plugin-transform-async-to-generator": "^8.0.1", + "@babel/plugin-transform-block-scoped-functions": "^8.0.1", + "@babel/plugin-transform-block-scoping": "^8.0.1", + "@babel/plugin-transform-class-properties": "^8.0.1", + "@babel/plugin-transform-class-static-block": "^8.0.1", + "@babel/plugin-transform-classes": "^8.0.1", + "@babel/plugin-transform-computed-properties": "^8.0.1", + "@babel/plugin-transform-destructuring": "^8.0.1", + "@babel/plugin-transform-dotall-regex": "^8.0.1", + "@babel/plugin-transform-duplicate-keys": "^8.0.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^8.0.1", + "@babel/plugin-transform-dynamic-import": "^8.0.1", + "@babel/plugin-transform-explicit-resource-management": "^8.0.1", + "@babel/plugin-transform-exponentiation-operator": "^8.0.1", + "@babel/plugin-transform-export-namespace-from": "^8.0.1", + "@babel/plugin-transform-for-of": "^8.0.1", + "@babel/plugin-transform-function-name": "^8.0.1", + "@babel/plugin-transform-json-strings": "^8.0.1", + "@babel/plugin-transform-literals": "^8.0.1", + "@babel/plugin-transform-logical-assignment-operators": "^8.0.1", + "@babel/plugin-transform-member-expression-literals": "^8.0.1", + "@babel/plugin-transform-modules-amd": "^8.0.1", + "@babel/plugin-transform-modules-commonjs": "8.0.1", + "@babel/plugin-transform-modules-systemjs": "^8.0.1", + "@babel/plugin-transform-modules-umd": "^8.0.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^8.0.1", + "@babel/plugin-transform-new-target": "^8.0.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^8.0.1", + "@babel/plugin-transform-numeric-separator": "^8.0.1", + "@babel/plugin-transform-object-rest-spread": "^8.0.1", + "@babel/plugin-transform-object-super": "^8.0.1", + "@babel/plugin-transform-optional-catch-binding": "^8.0.1", + "@babel/plugin-transform-optional-chaining": "^8.0.1", + "@babel/plugin-transform-parameters": "^8.0.1", + "@babel/plugin-transform-private-methods": "^8.0.1", + "@babel/plugin-transform-private-property-in-object": "^8.0.1", + "@babel/plugin-transform-property-literals": "^8.0.1", + "@babel/plugin-transform-regenerator": "^8.0.1", + "@babel/plugin-transform-regexp-modifiers": "^8.0.1", + "@babel/plugin-transform-reserved-words": "^8.0.1", + "@babel/plugin-transform-shorthand-properties": "^8.0.1", + "@babel/plugin-transform-spread": "^8.0.1", + "@babel/plugin-transform-sticky-regex": "^8.0.1", + "@babel/plugin-transform-template-literals": "^8.0.1", + "@babel/plugin-transform-typeof-symbol": "^8.0.1", + "@babel/plugin-transform-unicode-escapes": "^8.0.1", + "@babel/plugin-transform-unicode-property-regex": "^8.0.1", + "@babel/plugin-transform-unicode-regex": "^8.0.1", + "@babel/plugin-transform-unicode-sets-regex": "^8.0.1", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.1", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" + "babel-plugin-polyfill-corejs3": "^1.0.0-rc.2", + "core-js-compat": "^3.48.0", + "semver": "^7.7.3" } }, "@babel/preset-modules": { @@ -8144,44 +8639,89 @@ "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", "esutils": "^2.0.2" - } - }, - "@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, - "@babel/runtime": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", - "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", - "dev": true - }, - "@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true + } } }, "@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-8.0.0.tgz", + "integrity": "sha512-bxTj/W2VclGE6CctlfQOpxg8MPDzXArRqkOBePw8EHfebcjF7fETWSS3BriEECo+UiU/Yblq+xUtSImFu7cTbw==", "dev": true, "requires": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" + "@babel/code-frame": "^8.0.0", + "@babel/generator": "^8.0.0", + "@babel/helper-globals": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/template": "^8.0.0", + "@babel/types": "^8.0.0", + "obug": "^2.1.1" + }, + "dependencies": { + "@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" + } + }, + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "requires": { + "@babel/types": "^8.0.0" + } + }, + "@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" + } + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + }, + "js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true + } } }, "@babel/types": { @@ -8293,6 +8833,18 @@ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true }, + "@types/gensync": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/gensync/-/gensync-1.0.5.tgz", + "integrity": "sha512-MbsRCT7mTikHwKZ0X+LVUTLRrZZRLipTuXEO9qOYO+zmjMVk81axyClMROf6uoPD9MRVu46bx8zoR0Ad9q3NAg==", + "dev": true + }, + "@types/jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@types/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==", + "dev": true + }, "@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -8620,43 +9172,61 @@ } }, "babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", - "dev": true, - "requires": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", - "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.1.1.tgz", + "integrity": "sha512-JwKSzk2kjIe7mgPK+/lyZ2QAaJcpahNAdM+hgR2HI8D0OJVkdj8Rl6J3kaLYki9pwF7P2iWnD8qVv80Lq1ABtg==", "dev": true, "requires": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.1", - "semver": "^6.3.1" + "find-up": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + } } }, "babel-plugin-polyfill-corejs3": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.1.tgz", - "integrity": "sha512-XiFei6VGwM4ii6nKC1VCenGD8Z4bjiNYcrdkM8oqM3pbuemmyb8biMgrDX1ZHSbIuMLXatM6JJ/StPYIuTl6MQ==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", - "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-1.0.0-rc.2.tgz", + "integrity": "sha512-CANdCTyNm6Ds/kevG0Rbby/dvRPTvA7K5DLTiUrWBeRMnqp6Okg8idCw5fM3AdbAcxtR23Y9na3WOJRZ3i1hNA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.6.1" + "@babel/helper-define-polyfill-provider": "^1.0.0-rc.2", + "core-js-compat": "^3.48.0" } }, "balanced-match": { @@ -9029,12 +9599,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, - "common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true - }, "compare-angle": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/compare-angle/-/compare-angle-1.0.1.tgz", @@ -9114,12 +9678,12 @@ } }, "core-js-compat": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", - "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", "dev": true, "requires": { - "browserslist": "^4.23.0" + "browserslist": "^4.28.1" } }, "core-util-is": { @@ -9206,15 +9770,6 @@ "resolved": "https://registry.npmjs.org/cubic-hermite/-/cubic-hermite-1.0.0.tgz", "integrity": "sha1-hOOy8nKzFFToOTuZu2rtRRaMFOU=" }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -9358,6 +9913,12 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "empathic": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.1.tgz", + "integrity": "sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==", + "dev": true + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -9532,70 +10093,6 @@ "cubic-hermite": "^1.0.0" } }, - "find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "dev": true, - "requires": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "dependencies": { - "find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, - "requires": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - } - }, - "locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "requires": { - "p-locate": "^6.0.0" - } - }, - "p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "requires": { - "yocto-queue": "^1.0.0" - } - }, - "p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "requires": { - "p-limit": "^4.0.0" - } - }, - "path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true - }, - "pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", - "dev": true, - "requires": { - "find-up": "^6.3.0" - } - } - } - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -10031,12 +10528,6 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, "glsl-inject-defines": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz", @@ -10379,6 +10870,12 @@ "resolve-cwd": "^3.0.0" } }, + "import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "dev": true + }, "incremental-convex-hull": { "version": "git+ssh://git@github.com/plotly/incremental-convex-hull.git#352d9e73861913695fd4e1a4c6ad79898c0c8268", "from": "incremental-convex-hull@plotly/incremental-convex-hull#v1.1.0", @@ -10552,12 +11049,6 @@ "supports-color": "^8.0.0" } }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, "jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -10624,13 +11115,10 @@ "dev": true }, "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", + "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", + "dev": true }, "map-limit": { "version": "0.0.1", @@ -10805,12 +11293,6 @@ "to-px": "^1.0.1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "multipipe": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.3.1.tgz", @@ -11000,12 +11482,6 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true } } }, @@ -11080,6 +11556,12 @@ "object-keys": "^1.1.1" } }, + "obug": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz", + "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==", + "dev": true + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -11441,52 +11923,41 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", "dev": true, "requires": { "regenerate": "^1.4.2" } }, - "regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, "regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "dev": true, "requires": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "unicode-match-property-value-ecmascript": "^2.2.1" } }, + "regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true + }, "regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz", + "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==", "dev": true, "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } + "jsesc": "~3.1.0" } }, "repeat-string": { @@ -11671,9 +12142,9 @@ } }, "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz", + "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==", "dev": true }, "set-function-length": { @@ -12193,9 +12664,9 @@ "dev": true }, "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true }, "unicode-match-property-ecmascript": { @@ -12209,15 +12680,15 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "dev": true }, "union-find": { @@ -12457,16 +12928,10 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, "yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true }, "zero-crossings": { diff --git a/stackgl_modules/package.json b/stackgl_modules/package.json index fb8b74a7723..163cb347eaf 100644 --- a/stackgl_modules/package.json +++ b/stackgl_modules/package.json @@ -46,10 +46,10 @@ "zero-crossings": "plotly/zero-crossings#v1.1.0" }, "devDependencies": { - "@babel/core": "^7.25.2", - "@babel/plugin-transform-modules-commonjs": "7.24.1", - "@babel/preset-env": "7.24.1", - "babel-loader": "9.1.3", + "@babel/core": "^8.0.1", + "@babel/plugin-transform-modules-commonjs": "8.0.1", + "@babel/preset-env": "8.0.1", + "babel-loader": "10.1.1", "ify-loader": "1.1.0", "node-polyfill-webpack-plugin": "^4.0.0", "webpack": "^5.105.4", diff --git a/tasks/generate_schema_types.mjs b/tasks/generate_schema_types.mjs new file mode 100644 index 00000000000..e43a05b8e62 --- /dev/null +++ b/tasks/generate_schema_types.mjs @@ -0,0 +1,1291 @@ +/** + * Generate TypeScript interfaces from the plot schema. + * + * Walks schema.traces and schema.layout.layoutAttributes, emitting interfaces + * for all trace types, layout component types, and a top-level Layout interface + * into a single .d.ts file. All attribute metadata (valType, values, arrayOk, + * etc.) is mapped to the corresponding TypeScript type. + * + * Repeated container subtrees (colorbar, hoverlabel, font, etc.) are + * automatically detected via fingerprinting and extracted into shared + * interfaces to reduce output size. + * + * Run via `npm run schema` (which calls this after writing plot-schema.json). + */ + +import * as fs from 'fs'; + +// --------------------------------------------------------------------------- +// Meta keys to skip (not user-facing attributes) +// --------------------------------------------------------------------------- + +// Populated from `schema.defs.metaKeys` at the start of `generateSchemaTypes`. +// Empty until then — every helper that consults `META_KEYS` is only called +// from inside the generator's main pipeline, so the initial empty state is +// never observed in practice. +let META_KEYS = new Set(); + +// --------------------------------------------------------------------------- +// Common enum types — discovered from the schema at generation time and +// emitted as named type aliases in the output. Each anchor specifies a +// PascalCase type name and a `match(key, path, values)` predicate. If multiple +// enumerated attributes match the predicate, the one with the largest set of values +// is chosen. +// --------------------------------------------------------------------------- + +const COMMON_TYPE_ANCHORS = [ + { name: 'Calendar', match: (key) => /^[xyz]?calendar$/.test(key) }, + { name: 'Dash', match: (key) => key === 'dash' }, + { name: 'AxisType', match: (key, path) => key === 'type' && /[xyz]axis\.type$/.test(path) }, + { + name: 'XRef', + match: (key, _path, values) => key === 'xref' && values.length === 2 && values.includes('container') + }, + { + name: 'YRef', + match: (key, _path, values) => key === 'yref' && values.length === 2 && values.includes('container') + }, + { name: 'PatternShape', match: (key, path) => key === 'shape' && /\.pattern\.shape$/.test(path) }, + { name: 'TransitionEasing', match: (key) => key === 'easing' } +]; + +/** + * Module-level map populated by `discoverCommonTypes` before generation. + * Sorted-JSON-stringified values → common type name. + */ +const VALUES_TO_COMMON_TYPE = new Map(); + +/** Attribute name patterns that should use a specific common type. */ +const ATTR_NAME_OVERRIDES = new Map([['marker.symbol', 'MarkerSymbol']]); + +/** + * Shared interfaces wrapped inside `export namespace _internal { ... }`. + * + * These are publicly importable but the namespace path signals they are + * either schema-internal helpers (AutoRangeOptions, Lighting), superseded + * by a hand-written alternative (ErrorY → ErrorBar), or have names that + * would mislead if surfaced directly (Marker is scatter-only, Line is + * the marker outline rather than the trace line). + * + * Inside the namespace, sibling references are bare (`line?: Line`); outside, + * references are prefixed (`marker?: _internal.Marker`) via `refName()`. + */ +const INTERNAL_INTERFACES = new Set(['AutoRangeOptions', 'ErrorY', 'Lighting', 'Line', 'Marker']); + +function refName(name, inInternalNamespace) { + if (inInternalNamespace) return name; + if (INTERNAL_INTERFACES.has(name)) return `_internal.${name}`; + return name; +} + +/** + * Walk the schema to find the canonical `values` array for each anchor in + * `COMMON_TYPE_ANCHORS`. The first matching enumerated attribute wins. + * Also emits a `TraceType` alias derived from the trace-names list, + * plus a deprecated `PlotType` alias for back-compat. + * + * Populates `VALUES_TO_COMMON_TYPE` and returns `Map` for + * emitting type aliases. + */ +function discoverCommonTypes(schema) { + // Collect every match for each anchor — we'll pick the superset at the end. + const candidates = new Map(COMMON_TYPE_ANCHORS.map((a) => [a.name, []])); + + function visit(node, path) { + if (!node || typeof node !== 'object') return; + for (const [key, val] of Object.entries(node)) { + if (val && typeof val === 'object') { + const childPath = path ? `${path}.${key}` : key; + if ( + val.valType === 'enumerated' && + Array.isArray(val.values) && + val.values.every((v) => typeof v === 'string') + ) { + for (const anchor of COMMON_TYPE_ANCHORS) { + if (anchor.match(key, childPath, val.values)) { + candidates.get(anchor.name).push(val.values.slice()); + } + } + } + visit(val, childPath); + } + } + } + visit(schema.traces, 'traces'); + visit(schema.layout, 'layout'); + if (schema.animation) visit(schema.animation, 'animation'); + + // For each anchor, pick the largest value set. When sizes tie, the first + // match wins. The superset rule handles axis-type-style cases where + // different axis kinds (cartesian vs 3D scene) have different value sets. + const found = new Map(); + for (const anchor of COMMON_TYPE_ANCHORS) { + const matches = candidates.get(anchor.name); + if (matches.length === 0) { + throw new Error( + `Could not find an enumerated schema attribute for common type '${anchor.name}'. ` + + `Either the schema no longer exposes a matching attribute, or the anchor's match predicate needs updating.` + ); + } + const best = matches.reduce((a, b) => (b.length > a.length ? b : a)); + found.set(anchor.name, { values: best }); + VALUES_TO_COMMON_TYPE.set(JSON.stringify(best.slice().sort()), anchor.name); + } + + // TraceType — derived from the list of trace names, not from an attribute. + // (A deprecated `PlotType` alias is also emitted; see the emit loop.) + found.set('TraceType', { values: Object.keys(schema.traces).sort() }); + + return found; +} + +// --------------------------------------------------------------------------- +// Layout naming maps +// --------------------------------------------------------------------------- + +/** + * Override auto-generated shared type names to produce correct PascalCase. + * The fingerprint-based naming just capitalizes the first letter, which + * produces "Colorbar" instead of "ColorBar". These overrides fix that. + */ +const SHARED_NAME_OVERRIDES = new Map([ + ['colorbar', 'ColorBar'], + ['hoverlabel', 'HoverLabel'], + ['tickformatstops', 'TickFormatStops'], + ['autorangeoptions', 'AutoRangeOptions'], + ['legendgrouptitle', 'LegendGroupTitle'], + ['error_y', 'ErrorY'], + ['error_x', 'ErrorX'] +]); + +/** Interface names for layout subplot containers (_isSubplotObj). */ +const LAYOUT_CONTAINER_NAMES = new Map([ + ['xaxis', 'LayoutAxis'], + ['yaxis', 'LayoutAxis'], + ['legend', 'Legend'], + ['scene', 'Scene'], + ['polar', 'PolarLayout'], + ['ternary', 'TernaryLayout'], + ['geo', 'GeoLayout'], + ['map', 'MapLayout'], + ['mapbox', 'MapLayout'], + ['coloraxis', 'ColorAxis'], + ['smith', 'SmithLayout'] +]); + +/** Interface names for layout linked-to-array containers. */ +const LAYOUT_ARRAY_NAMES = new Map([ + ['annotations', 'Annotation'], + ['shapes', 'Shape'], + ['images', 'LayoutImage'], + ['sliders', 'Slider'], + ['updatemenus', 'UpdateMenu'], + ['selections', 'LayoutSelection'] +]); + +// --------------------------------------------------------------------------- +// valType → TS type +// --------------------------------------------------------------------------- + +function serializeValue(v) { + if (typeof v === 'string') { + const escaped = v.replace(/\\/g, '\\\\').replace(/'/g, "\\'"); + return `'${escaped}'`; + } + return String(v); // numbers, booleans +} + +/** + * Try to match a values array to a known common type. + * Returns the type name string or null. + */ +function matchCommonType(values) { + const sorted = values + .slice() + .filter((v) => typeof v === 'string') + .sort(); + const key = JSON.stringify(sorted); + return VALUES_TO_COMMON_TYPE.get(key) ?? null; +} + +/** + * Map an info_array attribute to a TypeScript type. + * + * info_array items in the schema carry an `items` array describing + * each element's valType (e.g. [{valType:'number'}, {valType:'number'}]). + * When all elements share the same valType we can emit a precise tuple + * or array type instead of `unknown[]`. + */ +function infoArrayToTS(attr) { + if (!attr.items) return 'any[]'; + + // items can be an array of item descriptors or a single descriptor + // (single descriptor = freeLength homogeneous array) + if (!Array.isArray(attr.items)) { + const elemType = simpleValType(attr.items.valType); + return `${elemType}[]`; + } + + const elemTypes = attr.items.map((item) => simpleValType(item.valType)); + + if (attr.freeLength) { + // Variable-length — use array of the union of element types + const unique = [...new Set(elemTypes)]; + const union = unique.length === 1 ? unique[0] : unique.join(' | '); + return `${union}[]`; + } + + // Fixed-length — emit tuple + return `[${elemTypes.join(', ')}]`; +} + +/** Map a valType string to a simple TS type (no arrayOk handling). */ +function simpleValType(valType) { + switch (valType) { + case 'number': + case 'integer': + return 'number'; + case 'string': + case 'subplotid': + return 'string'; + case 'boolean': + return 'boolean'; + case 'color': + return 'Color'; + default: + return 'any'; + } +} + +/** + * Format schema attribute metadata as a JSDoc comment block. + * Emits the description plus `@default`, min/max bounds, and `impliedEdits` + * lines when present. Containers (no valType) only carry a description, so + * the extra-metadata branches are no-ops for them. + * + * @param {object|undefined} attr - The schema attribute object + * @param {string} indent - Indentation string for each emitted line + * @returns {string[]} + */ +function formatJSDoc(attr, indent) { + if (!attr || typeof attr !== 'object') return []; + + const description = attr.description; + const tags = []; + + // @default — skip null and empty string (uninformative noise) + if ('dflt' in attr && attr.dflt !== null && attr.dflt !== '') { + let dfltStr; + if (typeof attr.dflt === 'string') { + dfltStr = `'${attr.dflt.replace(/'/g, "\\'")}'`; + } else if (Array.isArray(attr.dflt) || (typeof attr.dflt === 'object' && attr.dflt !== null)) { + dfltStr = JSON.stringify(attr.dflt); + } else { + dfltStr = String(attr.dflt); + } + tags.push(`@default ${dfltStr}`); + } + + // Numeric bounds + const hasMin = typeof attr.min === 'number'; + const hasMax = typeof attr.max === 'number'; + if (hasMin && hasMax) { + tags.push(`Range: [${attr.min}, ${attr.max}]`); + } else if (hasMin) { + tags.push(`Minimum: ${attr.min}`); + } else if (hasMax) { + tags.push(`Maximum: ${attr.max}`); + } + + // impliedEdits — attributes that get reset/changed alongside this one + if (attr.impliedEdits && typeof attr.impliedEdits === 'object') { + const entries = Object.entries(attr.impliedEdits); + if (entries.length > 0) { + const parts = entries.map(([k, v]) => `${k} = ${JSON.stringify(v)}`).join(', '); + tags.push(`Setting this also sets: ${parts}`); + } + } + + if (!description && tags.length === 0) return []; + + // Single-line — preserve original compact format when there's only a description + if (description && tags.length === 0) { + const text = description.replace(/\*\//g, '*\\/'); + return [`${indent}/** ${text} */`]; + } + + // Multi-line block + const out = [`${indent}/**`]; + if (description) { + const text = description.replace(/\*\//g, '*\\/'); + for (const line of text.split('\n')) { + out.push(`${indent} * ${line}`); + } + } + for (const tag of tags) { + out.push(`${indent} * ${tag}`); + } + out.push(`${indent} */`); + return out; +} + +/** + * Map a single schema attribute to its TypeScript type string. + * + * @param {object} attr - The attribute object from the schema + * @param {string} attrPath - Dot-separated path for name-based overrides + * @returns {string} TypeScript type expression + */ +function valTypeToTS(attr, attrPath) { + // Check name-based overrides first + for (const [pattern, typeName] of ATTR_NAME_OVERRIDES) { + if (attrPath.endsWith(pattern)) return typeName; + } + + const { valType } = attr; + let base; + + switch (valType) { + case 'data_array': + // Loose union — `data_array` has no dimensionality in the schema. See the + // dimensionality TODO in src/types/README.md for the precise long-term fix. + return 'Datum[] | Datum[][] | TypedArray'; + + case 'number': + case 'integer': { + const extras = Array.isArray(attr.extras) ? attr.extras.filter((v) => typeof v === 'string') : []; + if (extras.length > 0) { + base = 'number | ' + extras.map(serializeValue).join(' | '); + } else { + base = 'number'; + } + break; + } + + case 'string': { + if (attr.values && Array.isArray(attr.values)) { + const common = matchCommonType(attr.values); + if (common) { + base = common; + break; + } + base = attr.values.map(serializeValue).join(' | '); + } else { + base = 'string'; + } + break; + } + + case 'boolean': + base = 'boolean'; + break; + + case 'color': + base = 'Color'; + break; + + case 'colorscale': + base = 'ColorScale'; + break; + + case 'colorlist': + return 'Color[]'; + + case 'angle': + base = "number | 'auto'"; + break; + + case 'subplotid': + base = 'string'; + break; + + case 'enumerated': { + if (attr.values && Array.isArray(attr.values)) { + const common = matchCommonType(attr.values); + if (common) { + base = common; + break; + } + base = attr.values.map(serializeValue).join(' | '); + } else { + base = 'any'; + } + break; + } + + case 'flaglist': { + const parts = []; + if (Array.isArray(attr.flags)) { + parts.push(...attr.flags.map(serializeValue)); + } + if (Array.isArray(attr.extras)) { + parts.push(...attr.extras.map(serializeValue)); + } + // Use (string & {}) to allow flag combinations like 'x+y' + // while preserving autocomplete for individual flags. + if (parts.length > 0) { + parts.push('(string & {})'); + base = parts.join(' | '); + } else { + base = 'string'; + } + break; + } + + case 'info_array': + return infoArrayToTS(attr); + + case 'any': + return 'any'; + + default: + return 'any'; + } + + if (attr.arrayOk) { + // Wrap in parens if base contains '|' to avoid ambiguity + const needsParens = base.includes('|'); + return needsParens ? `${base} | (${base})[]` : `${base} | ${base}[]`; + } + + return base; +} + +// --------------------------------------------------------------------------- +// Structural helpers +// --------------------------------------------------------------------------- + +/** + * Detect a linked-to-array container in the serialized schema. + * + * In the source, these are marked with `_isLinkedToArray`, but that flag + * is stripped during serialization. We detect them structurally: a container + * whose only non-meta keys are `items`, and `items` is an object with exactly + * one child that is itself an object with attribute leaves. + */ +function isLinkedToArrayContainer(obj) { + if (!obj || typeof obj !== 'object' || !obj.items) return false; + // The container should have no other meaningful keys + const meaningful = Object.keys(obj).filter((k) => !META_KEYS.has(k) && k !== 'items'); + if (meaningful.length > 0) return false; + // items should have exactly one named child that is an object + const itemKeys = Object.keys(obj.items); + if (itemKeys.length !== 1) return false; + const child = obj.items[itemKeys[0]]; + return child && typeof child === 'object' && !child.valType; +} + +// --------------------------------------------------------------------------- +// Fingerprinting — canonical representation of container subtree shapes +// --------------------------------------------------------------------------- + +/** + * Compute a canonical fingerprint for a leaf attribute (has valType). + * Two leaves with the same fingerprint produce the same TS type. + */ +function leafFingerprint(attr, attrPath) { + return valTypeToTS(attr, attrPath); +} + +/** + * Compute a canonical fingerprint for a container (no valType). + * Recursively fingerprints nested containers. Two containers with the + * same fingerprint produce identical TypeScript object types. + */ +function containerFingerprint(attrs) { + const parts = []; + + for (const key of Object.keys(attrs).sort()) { + if (META_KEYS.has(key)) continue; + const val = attrs[key]; + if (val == null) continue; + + if (typeof val === 'string') { + parts.push(`${key}:L'${val}'`); + continue; + } + if (typeof val !== 'object') continue; + + if (val.valType) { + parts.push(`${key}:${leafFingerprint(val, key)}`); + continue; + } + + if (isLinkedToArrayContainer(val)) { + const itemChild = Object.values(val.items)[0]; + parts.push(`${key}:Array<${containerFingerprint(itemChild)}>`); + continue; + } + + parts.push(`${key}:{${containerFingerprint(val)}}`); + } + + return parts.join(','); +} + +/** + * Walk an attribute tree and collect fingerprints for every container + * subtree (including nested ones). Records each occurrence with the + * attribute key name (used later for naming). + * + * @param {object} attrs - Attribute object + * @param {Map} collector - Map, attrs}> + */ +function collectFingerprints(attrs, collector) { + for (const key of Object.keys(attrs).sort()) { + if (META_KEYS.has(key)) continue; + const val = attrs[key]; + if (val == null || typeof val !== 'object' || val.valType) continue; + + let containerAttrs; + if (isLinkedToArrayContainer(val)) { + // For linked-to-array containers, fingerprint the inner item, + // not the wrapper. The wrapper itself is always {items:{X:{...}}}. + containerAttrs = Object.values(val.items)[0]; + } else { + containerAttrs = val; + } + + const fp = containerFingerprint(containerAttrs); + + if (!collector.has(fp)) { + collector.set(fp, { count: 0, names: new Map(), attrs: containerAttrs }); + } + const entry = collector.get(fp); + entry.count++; + entry.names.set(key, (entry.names.get(key) || 0) + 1); + + // Recurse into children + collectFingerprints(containerAttrs, collector); + } +} + +// --------------------------------------------------------------------------- +// Shared type selection and naming +// --------------------------------------------------------------------------- + +const MIN_OCCURRENCES = 5; +const MIN_PROPERTIES = 4; + +/** + * Count the number of property lines a container would produce. + */ +function countProperties(attrs) { + let count = 0; + for (const key of Object.keys(attrs)) { + if (META_KEYS.has(key)) continue; + const val = attrs[key]; + if (val == null) continue; + if (typeof val === 'string' || typeof val !== 'object') { + count++; + continue; + } + if (val.valType) { + count++; + continue; + } + count++; // container counts as one property + } + return count; +} + +/** Convert an attribute key to a PascalCase interface name. */ +function keyToInterfaceName(key) { + const override = SHARED_NAME_OVERRIDES.get(key); + if (override) return override; + return key + .split('_') + .map((s) => s.charAt(0).toUpperCase() + s.slice(1)) + .join(''); +} + +/** + * Determine shared types from collected fingerprints. + * + * Returns Map for containers that should + * be extracted into shared interfaces. + */ +function selectSharedTypes(collector) { + /** @type {Map} fingerprint → interface name */ + const shared = new Map(); + /** @type {Map} interface name → canonical fingerprint (largest so far) */ + const nameToCanonFp = new Map(); + + // Sort by count descending so the most common get first pick of names + const candidates = [...collector.entries()] + .filter(([, entry]) => { + if (entry.count < MIN_OCCURRENCES) return false; + if (countProperties(entry.attrs) >= MIN_PROPERTIES) return true; + // Allow explicitly named overrides to bypass MIN_PROPERTIES + for (const name of entry.names.keys()) { + if (SHARED_NAME_OVERRIDES.has(name)) return true; + } + return false; + }) + .sort((a, b) => b[1].count - a[1].count); + + for (const [fp, entry] of candidates) { + // Pick the most common attribute key as the name + let bestKey = ''; + let bestCount = 0; + for (const [name, count] of entry.names) { + if (count > bestCount) { + bestKey = name; + bestCount = count; + } + } + + let interfaceName = keyToInterfaceName(bestKey); + + // Disambiguate font variants by checking if properties have arrayOk + if (interfaceName.toLowerCase().endsWith('font')) { + const hasArrayOk = Object.values(entry.attrs).some( + (v) => v && typeof v === 'object' && v.valType && v.arrayOk + ); + interfaceName = hasArrayOk ? 'FontArray' : 'Font'; + } + + if (nameToCanonFp.has(interfaceName)) { + // Name collision — check subset/superset relationship. + // Since all properties are optional, a superset type safely + // covers all subset variants. + const existingFp = nameToCanonFp.get(interfaceName); + const existingParts = existingFp.split(','); + const newParts = fp.split(','); + const existingSet = new Set(existingParts); + const newSet = new Set(newParts); + + const newSubsetOfExisting = newParts.every((p) => existingSet.has(p)); + const existingSubsetOfNew = existingParts.every((p) => newSet.has(p)); + + if (newSubsetOfExisting) { + // New is a subset of existing — just map to existing name + shared.set(fp, interfaceName); + continue; + } else if (existingSubsetOfNew) { + // Existing is a subset of new — upgrade canonical to the superset + shared.set(fp, interfaceName); + nameToCanonFp.set(interfaceName, fp); + continue; + } else { + // Unrelated — disambiguate with numeric suffix + let suffix = 2; + while (nameToCanonFp.has(interfaceName + suffix)) suffix++; + interfaceName = interfaceName + suffix; + } + } + + nameToCanonFp.set(interfaceName, fp); + shared.set(fp, interfaceName); + } + + return shared; +} + +/** + * Attempt superset merging: if a smaller fingerprint is a strict subset + * of a larger one (same keys minus a few extras), merge the smaller's + * occurrences into the larger. + * + * We do this by checking if the property lines of the subset are a + * prefix-match of the superset (since keys are sorted). + */ +function mergeSubsets(collector, shared) { + // Merge non-shared fingerprints that are strict SUBSETS of a shared + // fingerprint into the same name. Only one direction — we never expand + // a shared type to a superset here (that's handled in selectSharedTypes + // for same-named candidates). Iterate until stable for transitive + // subset chains (if C ⊂ B and B was just merged into A, C should too). + let changed = true; + while (changed) { + changed = false; + for (const [fpA, nameA] of [...shared.entries()]) { + const partsA = new Set(fpA.split(',')); + + for (const [fpB, entryB] of collector.entries()) { + if (fpB === fpA) continue; + if (shared.has(fpB)) continue; + if (entryB.count < 2) continue; + + // Check if B is a strict subset of A + const partsB = fpB.split(','); + const bSubsetOfA = partsB.every((p) => partsA.has(p)); + + if (bSubsetOfA) { + shared.set(fpB, nameA); + changed = true; + } + } + } + } +} + +// --------------------------------------------------------------------------- +// Attribute tree walker (with shared type support) +// --------------------------------------------------------------------------- + +/** + * Walk a schema attribute object and emit TypeScript property lines. + * + * @param {object} attrs - Attribute object from the schema + * @param {string} indent - Current indentation string + * @param {string} pathPrefix - Dot-separated path for name-based overrides + * @param {Map} sharedTypes - fingerprint → interface name + * @param {Object} [fieldOverrides] - field-name → TS type to + * force, bypassing schema-derived types. Used for fields whose schema + * valType is intentionally `any` because the schema is recursive (e.g. + * Frame.layout points to the entire Layout shape). + * @returns {string[]} Array of TS property declaration lines + */ +function attrsToProperties(attrs, indent, pathPrefix, sharedTypes, fieldOverrides, inInternalNamespace = false) { + const lines = []; + + for (const key of Object.keys(attrs).sort()) { + // Skip meta keys + if (META_KEYS.has(key)) continue; + + const val = attrs[key]; + + // Skip null/undefined + if (val == null) continue; + + const attrPath = pathPrefix ? `${pathPrefix}.${key}` : key; + + // Field-level override — bypass schema typing entirely + if (fieldOverrides && Object.prototype.hasOwnProperty.call(fieldOverrides, key)) { + if (val && typeof val === 'object' && val.description) { + lines.push(...formatJSDoc(val, indent)); + } + lines.push(`${indent}${key}?: ${fieldOverrides[key]};`); + continue; + } + + // String literal (e.g. type: "ohlc") + if (typeof val === 'string') { + lines.push(`${indent}${key}?: '${val}';`); + continue; + } + + // Non-object primitive (shouldn't happen, but guard) + if (typeof val !== 'object') continue; + + // Leaf attribute (has valType) + if (val.valType) { + const tsType = valTypeToTS(val, attrPath); + lines.push(...formatJSDoc(val, indent)); + lines.push(`${indent}${key}?: ${tsType};`); + continue; + } + + // Linked-to-array container — check if inner item matches a shared type + if (isLinkedToArrayContainer(val)) { + const itemChild = Object.values(val.items)[0]; + const fp = containerFingerprint(itemChild); + const sharedName = sharedTypes.get(fp); + if (sharedName) { + lines.push(...formatJSDoc(val, indent)); + lines.push(`${indent}${key}?: ${refName(sharedName, inInternalNamespace)}[];`); + continue; + } + const nested = attrsToProperties( + itemChild, + indent + ' ', + attrPath, + sharedTypes, + undefined, + inInternalNamespace + ); + if (nested.length > 0) { + lines.push(...formatJSDoc(val, indent)); + lines.push(`${indent}${key}?: Array<{`); + lines.push(...nested); + lines.push(`${indent}}>;`); + continue; + } + } + + // Check if this container matches a shared type + const fp = containerFingerprint(val); + const sharedName = sharedTypes.get(fp); + if (sharedName) { + lines.push(...formatJSDoc(val, indent)); + lines.push(`${indent}${key}?: ${refName(sharedName, inInternalNamespace)};`); + continue; + } + + // Container object — recurse + const nested = attrsToProperties(val, indent + ' ', attrPath, sharedTypes, undefined, inInternalNamespace); + if (nested.length > 0) { + lines.push(...formatJSDoc(val, indent)); + lines.push(`${indent}${key}?: {`); + lines.push(...nested); + lines.push(`${indent}};`); + } + } + + return lines; +} + +// --------------------------------------------------------------------------- +// Trace name → interface name +// --------------------------------------------------------------------------- + +function traceNameToInterfaceName(traceName) { + return traceName.charAt(0).toUpperCase() + traceName.slice(1) + 'Data'; +} + +// --------------------------------------------------------------------------- +// Layout generation helpers +// --------------------------------------------------------------------------- + +/** + * Group subplot containers by target interface name and merge their + * attributes into a superset. E.g. xaxis and yaxis both map to LayoutAxis; + * their attributes are merged so the interface covers both. + * + * @param {object} layoutAttrs - schema.layout.layoutAttributes + * @returns {Map} + */ +function buildSubplotGroups(layoutAttrs) { + const groups = new Map(); + for (const [key, val] of Object.entries(layoutAttrs)) { + if (!val || typeof val !== 'object' || !val._isSubplotObj) continue; + const name = LAYOUT_CONTAINER_NAMES.get(key) || keyToInterfaceName(key); + const existing = groups.get(name); + if (existing) { + // Merge: superset of both attribute sets + for (const [k, v] of Object.entries(val)) { + if (!(k in existing.attrs)) existing.attrs[k] = v; + } + existing.keys.push(key); + } else { + groups.set(name, { attrs: { ...val }, keys: [key] }); + } + } + return groups; +} + +/** + * Extract linked-to-array containers from layout attributes. + * Returns a map of interface name → item attributes. + * + * @param {object} layoutAttrs - schema.layout.layoutAttributes + * @returns {Map} name → item child attrs + */ +function extractArrayItems(layoutAttrs) { + const items = new Map(); + for (const [key, val] of Object.entries(layoutAttrs)) { + if (!val || typeof val !== 'object') continue; + if (!isLinkedToArrayContainer(val)) continue; + const name = LAYOUT_ARRAY_NAMES.get(key) || keyToInterfaceName(key); + const itemChild = Object.values(val.items)[0]; + items.set(name, itemChild); + } + return items; +} + +/** + * Generate the Layout interface body. + * + * @param {object} layoutAttrs - schema.layout.layoutAttributes + * @param {Map} sharedTypes - fingerprint → interface name + * @param {Map} subplotGroups - from buildSubplotGroups + * @param {Map} arrayItems - from extractArrayItems + * @returns {string[]} property lines + */ +function generateLayoutProperties(layoutAttrs, sharedTypes, subplotGroups, arrayItems) { + const lines = []; + const subplotEntries = []; // {key, typeName} for index signatures + + // Build reverse maps: layout key → subplot name, layout key → array name + const subplotKeyToName = new Map(); + for (const [name, { keys }] of subplotGroups) { + for (const k of keys) subplotKeyToName.set(k, name); + } + const arrayKeyToName = new Map(); + for (const [key, val] of Object.entries(layoutAttrs)) { + if (isLinkedToArrayContainer(val)) { + arrayKeyToName.set(key, LAYOUT_ARRAY_NAMES.get(key) || keyToInterfaceName(key)); + } + } + + for (const key of Object.keys(layoutAttrs).sort()) { + if (META_KEYS.has(key)) continue; + const val = layoutAttrs[key]; + if (val == null) continue; + + // String literal + if (typeof val === 'string') { + lines.push(` ${key}?: '${val}';`); + continue; + } + if (typeof val !== 'object') continue; + + // Leaf attribute + if (val.valType) { + const tsType = valTypeToTS(val, key); + lines.push(` ${key}?: ${tsType};`); + continue; + } + + // Subplot container — reference the named interface + if (subplotKeyToName.has(key)) { + const typeName = subplotKeyToName.get(key); + lines.push(` ${key}?: ${typeName};`); + subplotEntries.push({ key, typeName }); + continue; + } + + // Linked-to-array container — reference as array + if (arrayKeyToName.has(key)) { + const typeName = arrayKeyToName.get(key); + lines.push(` ${key}?: ${typeName}[];`); + continue; + } + + // Regular container — check for shared type + const fp = containerFingerprint(val); + const sharedName = sharedTypes.get(fp); + if (sharedName) { + lines.push(` ${key}?: ${refName(sharedName, false)};`); + continue; + } + + // Inline container + const nested = attrsToProperties(val, ' ', key, sharedTypes); + if (nested.length > 0) { + lines.push(` ${key}?: {`); + lines.push(...nested); + lines.push(` };`); + } + } + + // Subplot index signatures for numbered variants (xaxis2, scene3, etc.) + if (subplotEntries.length > 0) { + lines.push(''); + lines.push(' // Subplot index signatures for numbered variants'); + // Dedupe by typeName+key pattern (xaxis and yaxis have separate entries) + for (const { key, typeName } of subplotEntries) { + lines.push(` [key: \`${key}\${number}\`]: ${typeName};`); + } + } + + return lines; +} + +// --------------------------------------------------------------------------- +// Main +// --------------------------------------------------------------------------- + +/** + * Generate type declarations from a plot schema object. + * + * @param {object} schema - The full plot schema (as from Plotly.PlotSchema.get()) + * @param {string} outputPath - Absolute path to write the .d.ts file + */ +export function generateSchemaTypes(schema, outputPath) { + const traceNames = Object.keys(schema.traces).sort(); + const layoutAttrs = schema.layout.layoutAttributes; + + // Populate META_KEYS from the schema's own list of metadata keys so we + // pick up any future additions without code changes. + if (Array.isArray(schema.defs?.metaKeys)) { + META_KEYS = new Set(schema.defs.metaKeys); + } else { + throw new Error('schema.defs.metaKeys is missing — cannot determine which keys to skip during emission'); + } + + // ----- Phase 0: Discover common enum types (Calendar, Dash, ...) ----- + const commonTypes = discoverCommonTypes(schema); + + // ----- Phase 1: Fingerprint all container subtrees across traces + layout ----- + const collector = new Map(); + for (const traceName of traceNames) { + collectFingerprints(schema.traces[traceName].attributes, collector); + } + collectFingerprints(layoutAttrs, collector); + + // ----- Phase 2: Select shared types and merge subsets ----- + const sharedTypes = selectSharedTypes(collector); + mergeSubsets(collector, sharedTypes); + + // Build ordered list of shared interfaces. For each name, use the + // LARGEST fingerprint (most properties) so the interface is a superset + // of all variants mapped to that name. + const nameToData = new Map(); + for (const [fp, name] of sharedTypes.entries()) { + const entry = collector.get(fp); + if (!entry) continue; + const propCount = countProperties(entry.attrs); + const existing = nameToData.get(name); + if (!existing || propCount > existing.propCount) { + nameToData.set(name, { fp, attrs: entry.attrs, propCount }); + } + } + + // Inject animation subtree types as shared interfaces so AnimationOpts + // and any other site referencing the same shape gets a named reference + // instead of an inlined object. These occur fewer than MIN_OCCURRENCES + // times so the automatic fingerprint extraction skips them. + if (schema.animation) { + const injectShared = (attrs, name) => { + if (!attrs || typeof attrs !== 'object') return; + const fp = containerFingerprint(attrs); + if (!sharedTypes.has(fp)) { + sharedTypes.set(fp, name); + nameToData.set(name, { fp, attrs, propCount: countProperties(attrs) }); + } + }; + injectShared(schema.animation.transition, 'Transition'); + injectShared(schema.animation.frame, 'AnimationFrameOpts'); + } + + const sharedList = [...nameToData.entries()] + .map(([name, { fp, attrs }]) => [name, { fp, attrs }]) + .sort((a, b) => { + // Leaf types first (Font before ColorBar/HoverLabel) + const aDepth = a[1].fp.includes(':{') ? 1 : 0; + const bDepth = b[1].fp.includes(':{') ? 1 : 0; + if (aDepth !== bDepth) return aDepth - bDepth; + return a[0].localeCompare(b[0]); + }); + + // For emitting shared interface bodies, use sharedTypes so nested + // shared types get replaced (e.g. Font inside ColorBar), but exclude + // all fingerprints that map to the same name to avoid circular + // self-references (multiple fps can share a name after merging). + const emitSharedBody = (attrs, selfName) => { + const innerShared = new Map(); + for (const [fp, name] of sharedTypes) { + if (name !== selfName) { + innerShared.set(fp, name); + } + } + const inNs = INTERNAL_INTERFACES.has(selfName); + return attrsToProperties(attrs, ' ', '', innerShared, undefined, inNs); + }; + + // ----- Phase 3: Layout-specific interfaces ----- + const subplotGroups = buildSubplotGroups(layoutAttrs); + const arrayItems = extractArrayItems(layoutAttrs); + + // ----- Phase 4: Build output ----- + const chunks = [ + '/**', + ' * Generated from plot-schema.json by tasks/generate_schema_types.mjs.', + ' * Do not edit by hand — run `npm run schema` to regenerate.', + ' */', + '', + "import type { Color, ColorScale, Datum, MarkerSymbol, TypedArray } from '../lib/common';", + '' + ]; + + // Emit common enum type aliases discovered from the schema + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push('// Common enum types — value sets discovered from the schema'); + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push(''); + for (const [name, { values }] of commonTypes) { + const union = values.map(serializeValue).join(' | '); + chunks.push(`export type ${name} = ${union};`); + chunks.push(''); + } + + // Deprecated back-compat alias — kept so existing consumers importing + // `PlotType` continue to work. New code should use `TraceType`. + chunks.push('/** @deprecated Renamed to TraceType. */'); + chunks.push('export type PlotType = TraceType;'); + chunks.push(''); + + // Emit shared interfaces — public ones at the top level, "internal" ones + // wrapped in `export namespace _internal { ... }` so consumers reach them + // via the namespace prefix rather than directly. + const publicShared = sharedList.filter(([name]) => !INTERNAL_INTERFACES.has(name)); + const internalShared = sharedList.filter(([name]) => INTERNAL_INTERFACES.has(name)); + + if (publicShared.length > 0) { + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push('// Shared interfaces — extracted from repeated attribute subtrees'); + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push(''); + + for (const [name, { fp, attrs }] of publicShared) { + const properties = emitSharedBody(attrs, name); + chunks.push(`export interface ${name} {`); + chunks.push(...properties); + chunks.push('}'); + chunks.push(''); + } + } + + if (internalShared.length > 0) { + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push('// Internal shared interfaces — schema helpers or types whose direct names'); + chunks.push('// would mislead consumers. Reach them via `_internal.X` or, preferably,'); + chunks.push('// through indexed access on the parent type (e.g. `ScatterData["marker"]`).'); + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push(''); + chunks.push('export namespace _internal {'); + for (const [name, { fp, attrs }] of internalShared) { + const properties = emitSharedBody(attrs, name); + chunks.push(` export interface ${name} {`); + // Reindent the body — each line gets 4 more spaces (or stays blank). + for (const line of properties) chunks.push(line === '' ? line : ' ' + line); + chunks.push(' }'); + chunks.push(''); + } + chunks.push('}'); + chunks.push(''); + } + + // Emit per-trace interfaces + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push('// Trace interfaces'); + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push(''); + + for (const traceName of traceNames) { + const trace = schema.traces[traceName]; + const interfaceName = traceNameToInterfaceName(traceName); + + const properties = attrsToProperties(trace.attributes, ' ', '', sharedTypes); + + chunks.push(`export interface ${interfaceName} {`); + chunks.push(...properties); + chunks.push('}'); + chunks.push(''); + } + + // Discriminated union of every trace shape. All fields are optional via + // `Partial<…>` — narrow with the `type` discriminator before accessing + // trace-specific attributes. + chunks.push('/**'); + chunks.push(' * Union of every trace shape. All fields are optional via `Partial<…>` —'); + chunks.push(' * narrow with the `type` discriminator before accessing trace-specific'); + chunks.push(' * attributes:'); + chunks.push(' *'); + chunks.push(' * if (trace.type === \'bar\') { trace.marker?.cornerradius }'); + chunks.push(' * if (trace.type === \'pie\') { trace.marker?.colors }'); + chunks.push(' */'); + chunks.push('export type Data ='); + traceNames.forEach((traceName, i) => { + const interfaceName = traceNameToInterfaceName(traceName); + const sep = i === traceNames.length - 1 ? ';' : ''; + chunks.push(` | Partial<${interfaceName}>${sep}`); + }); + chunks.push(''); + + // Emit layout-specific interfaces (subplots + array items) + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push('// Layout component interfaces'); + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push(''); + + for (const [name, { attrs }] of [...subplotGroups.entries()].sort((a, b) => a[0].localeCompare(b[0]))) { + const properties = attrsToProperties(attrs, ' ', '', sharedTypes); + chunks.push(`export interface ${name} {`); + chunks.push(...properties); + chunks.push('}'); + chunks.push(''); + } + + for (const [name, attrs] of [...arrayItems.entries()].sort((a, b) => a[0].localeCompare(b[0]))) { + const properties = attrsToProperties(attrs, ' ', '', sharedTypes); + chunks.push(`export interface ${name} {`); + chunks.push(...properties); + chunks.push('}'); + chunks.push(''); + } + + // Emit the Layout interface + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push('// Layout'); + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push(''); + + const layoutProperties = generateLayoutProperties(layoutAttrs, sharedTypes, subplotGroups, arrayItems); + chunks.push('export interface Layout {'); + chunks.push(...layoutProperties); + chunks.push('}'); + chunks.push(''); + + // ----- Phase 5: Animation, Frame, Edits, and ConfigBase interfaces ----- + const extraInterfaces = []; + if (schema.animation) { + const animProps = attrsToProperties(schema.animation, ' ', 'animation', sharedTypes); + extraInterfaces.push({ name: 'AnimationOpts', properties: animProps }); + } + if (schema.frames && schema.frames.items) { + const frameEntry = Object.values(schema.frames.items)[0]; + if (frameEntry) { + // `data` and `layout` are `valType: 'any'` in the schema because they + // recursively reference the schema's own top-level shapes — schema + // can't self-reference, so override here at the type-generation layer. + const frameProps = attrsToProperties(frameEntry, ' ', 'frame', sharedTypes, { + data: 'any[]', + layout: 'Partial' + }); + extraInterfaces.push({ name: 'Frame', properties: frameProps }); + } + } + if (schema.config && schema.config.edits) { + const editsProps = attrsToProperties(schema.config.edits, ' ', 'edits', sharedTypes); + extraInterfaces.push({ name: 'Edits', properties: editsProps }); + + // Register Edits's fingerprint so the ConfigBase emission below + // references `edits?: Edits` instead of re-inlining the subtree. + sharedTypes.set(containerFingerprint(schema.config.edits), 'Edits'); + } + if (schema.config) { + // Generate the schema-derived Config building block. Fields whose + // schema valType is `any` (locales, modeBarButtons, setBackground, + // toImageButtonOptions, ...) come through as `any` and are + // overridden with precise types in `core/config.d.ts`'s `Config` + // via Omit/intersection. The schema is fundamentally unable to + // describe functions or arbitrary-key maps, so those overrides are + // permanent. + const configProps = attrsToProperties(schema.config, ' ', 'config', sharedTypes); + extraInterfaces.push({ name: 'ConfigBase', properties: configProps }); + } + + if (extraInterfaces.length > 0) { + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push('// Animation, frames, and config interfaces'); + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push(''); + for (const { name, properties } of extraInterfaces) { + chunks.push(`export interface ${name} {`); + chunks.push(...properties); + chunks.push('}'); + chunks.push(''); + } + } + + fs.writeFileSync(outputPath, chunks.join('\n')); + + const sharedCount = sharedList.length; + const layoutCount = subplotGroups.size + arrayItems.size + 1; // +1 for Layout itself + const extraCount = extraInterfaces.length; + console.log( + `Generated ${traceNames.length} trace(s) + ${layoutCount} layout type(s) + ${sharedCount} shared interface(s) + ${extraCount} animation/config interface(s) → ${outputPath}` + ); + + // Return all top-level exported interface names so callers can verify + // re-exports. Excludes names wrapped inside `namespace _internal` — they + // are exported via the namespace but their bare names aren't importable + // from the module's top level, so a per-name re-export check would + // falsely flag them as missing. + const exportedNames = new Set(); + for (const name of commonTypes.keys()) exportedNames.add(name); + exportedNames.add('PlotType'); + for (const [name] of sharedList) { + if (!INTERNAL_INTERFACES.has(name)) exportedNames.add(name); + } + for (const traceName of traceNames) exportedNames.add(traceNameToInterfaceName(traceName)); + exportedNames.add('Data'); + for (const name of subplotGroups.keys()) exportedNames.add(name); + for (const name of arrayItems.keys()) exportedNames.add(name); + exportedNames.add('Layout'); + for (const { name } of extraInterfaces) exportedNames.add(name); + return exportedNames; +} diff --git a/tasks/schema.mjs b/tasks/schema.mjs index 704302d5b30..465fde773cb 100644 --- a/tasks/schema.mjs +++ b/tasks/schema.mjs @@ -3,6 +3,7 @@ import fs from 'fs'; import path from 'path'; import { localDevConfig } from '../esbuild-config.js'; +import { generateSchemaTypes } from './generate_schema_types.mjs'; import constants from './util/constants.js'; import plotlyNode from './util/plotly_node.mjs'; @@ -70,3 +71,9 @@ await build(localDevConfig); // output plot-schema JSON makeSchema(pathToPlotly, pathToSchema); + +// generate TypeScript types from the schema +// and write to `src/types/generated/schema.d.ts` +const schema = JSON.parse(fs.readFileSync(pathToSchema, 'utf-8')); +const pathToGeneratedTypes = path.join(constants.pathToSrc, 'types/generated/schema.d.ts'); +generateSchemaTypes(schema, pathToGeneratedTypes); diff --git a/tasks/test_syntax.js b/tasks/test_syntax.js index dcb4ff5e538..7abe7db9f58 100644 --- a/tasks/test_syntax.js +++ b/tasks/test_syntax.js @@ -193,12 +193,7 @@ function assertFileNames() { var base = path.basename(file); if( - base === 'README.md' || - base === 'CONTRIBUTING.md' || - base === 'CHANGELOG.md' || - base === 'SECURITY.md' || - base === 'BUILDING.md' || - base === 'CUSTOM_BUNDLE.md' || + base.endsWith('.md') || base === 'CITATION.cff' || file.indexOf('mathjax') !== -1 ) return; diff --git a/test/image/baselines/20.png b/test/image/baselines/20.png index 230a6baf8b7..374551b3b33 100644 Binary files a/test/image/baselines/20.png and b/test/image/baselines/20.png differ diff --git a/test/image/baselines/4.png b/test/image/baselines/4.png index 95deeefdd0b..2d1d1fd4a79 100644 Binary files a/test/image/baselines/4.png and b/test/image/baselines/4.png differ diff --git a/test/image/baselines/autorange-tozero-rangemode.png b/test/image/baselines/autorange-tozero-rangemode.png index ebc57f4d8d2..138d26a311b 100644 Binary files a/test/image/baselines/autorange-tozero-rangemode.png and b/test/image/baselines/autorange-tozero-rangemode.png differ diff --git a/test/image/baselines/bar-like_textangle45.png b/test/image/baselines/bar-like_textangle45.png index f116dbf9db0..d13af973068 100644 Binary files a/test/image/baselines/bar-like_textangle45.png and b/test/image/baselines/bar-like_textangle45.png differ diff --git a/test/image/baselines/bar-like_textangle60.png b/test/image/baselines/bar-like_textangle60.png index 91eaa7e1248..f9da7ba848b 100644 Binary files a/test/image/baselines/bar-like_textangle60.png and b/test/image/baselines/bar-like_textangle60.png differ diff --git a/test/image/baselines/bar-like_traces_no-tozero.png b/test/image/baselines/bar-like_traces_no-tozero.png index 9f1743aa9a0..4e0b7cd91cc 100644 Binary files a/test/image/baselines/bar-like_traces_no-tozero.png and b/test/image/baselines/bar-like_traces_no-tozero.png differ diff --git a/test/image/baselines/bar-like_traces_no-tozero_negative.png b/test/image/baselines/bar-like_traces_no-tozero_negative.png index 2a6980acd34..fe9c158e8ac 100644 Binary files a/test/image/baselines/bar-like_traces_no-tozero_negative.png and b/test/image/baselines/bar-like_traces_no-tozero_negative.png differ diff --git a/test/image/baselines/bar-like_traces_tozero.png b/test/image/baselines/bar-like_traces_tozero.png index 67ff3bbf6b7..95c051743ca 100644 Binary files a/test/image/baselines/bar-like_traces_tozero.png and b/test/image/baselines/bar-like_traces_tozero.png differ diff --git a/test/image/baselines/bar-marker-line-colorscales.png b/test/image/baselines/bar-marker-line-colorscales.png index 940616d99a0..5bafbeb60d8 100644 Binary files a/test/image/baselines/bar-marker-line-colorscales.png and b/test/image/baselines/bar-marker-line-colorscales.png differ diff --git a/test/image/baselines/bar_gantt-chart.png b/test/image/baselines/bar_gantt-chart.png index a6e0c1f1af0..2ad18149796 100644 Binary files a/test/image/baselines/bar_gantt-chart.png and b/test/image/baselines/bar_gantt-chart.png differ diff --git a/test/image/baselines/candlestick_double-y-axis.png b/test/image/baselines/candlestick_double-y-axis.png index 077f3b8fab0..fd0c83a5331 100644 Binary files a/test/image/baselines/candlestick_double-y-axis.png and b/test/image/baselines/candlestick_double-y-axis.png differ diff --git a/test/image/baselines/candlestick_rangeslider_thai.png b/test/image/baselines/candlestick_rangeslider_thai.png index f40e1cdd0ef..5057aaa7197 100644 Binary files a/test/image/baselines/candlestick_rangeslider_thai.png and b/test/image/baselines/candlestick_rangeslider_thai.png differ diff --git a/test/image/baselines/color_syntax_formats.png b/test/image/baselines/color_syntax_formats.png new file mode 100644 index 00000000000..e78032e78f0 Binary files /dev/null and b/test/image/baselines/color_syntax_formats.png differ diff --git a/test/image/baselines/display-text_zero-number.png b/test/image/baselines/display-text_zero-number.png index 9c75f2ba312..ca9c74dd8a6 100644 Binary files a/test/image/baselines/display-text_zero-number.png and b/test/image/baselines/display-text_zero-number.png differ diff --git a/test/image/baselines/funnel_multicategory.png b/test/image/baselines/funnel_multicategory.png index b4bc0ded96c..b3e34c11f2f 100644 Binary files a/test/image/baselines/funnel_multicategory.png and b/test/image/baselines/funnel_multicategory.png differ diff --git a/test/image/baselines/heatmap_categoryorder.png b/test/image/baselines/heatmap_categoryorder.png index 486a02a0807..9a0bd204a4a 100644 Binary files a/test/image/baselines/heatmap_categoryorder.png and b/test/image/baselines/heatmap_categoryorder.png differ diff --git a/test/image/baselines/heatmap_xyz-gaps-on-sides.png b/test/image/baselines/heatmap_xyz-gaps-on-sides.png index 303bbcb8cf6..27bdf2c5903 100644 Binary files a/test/image/baselines/heatmap_xyz-gaps-on-sides.png and b/test/image/baselines/heatmap_xyz-gaps-on-sides.png differ diff --git a/test/image/baselines/histogram2d_bingroup-coloraxis.png b/test/image/baselines/histogram2d_bingroup-coloraxis.png index 2a9198a289a..5e24604b58d 100644 Binary files a/test/image/baselines/histogram2d_bingroup-coloraxis.png and b/test/image/baselines/histogram2d_bingroup-coloraxis.png differ diff --git a/test/image/baselines/histogram2d_legend.png b/test/image/baselines/histogram2d_legend.png index 90f94fa3e4b..e4a21fd6394 100644 Binary files a/test/image/baselines/histogram2d_legend.png and b/test/image/baselines/histogram2d_legend.png differ diff --git a/test/image/baselines/icicle_packages_colorscale_novalue.png b/test/image/baselines/icicle_packages_colorscale_novalue.png index 84ed0105730..7d7567f5e7c 100644 Binary files a/test/image/baselines/icicle_packages_colorscale_novalue.png and b/test/image/baselines/icicle_packages_colorscale_novalue.png differ diff --git a/test/image/baselines/icicle_values_colorscale.png b/test/image/baselines/icicle_values_colorscale.png index c0112c025c6..0fa23286068 100644 Binary files a/test/image/baselines/icicle_values_colorscale.png and b/test/image/baselines/icicle_values_colorscale.png differ diff --git a/test/image/baselines/legend_scroll_beyond_plotarea.png b/test/image/baselines/legend_scroll_beyond_plotarea.png index 677421dd0ff..51ecafd947b 100644 Binary files a/test/image/baselines/legend_scroll_beyond_plotarea.png and b/test/image/baselines/legend_scroll_beyond_plotarea.png differ diff --git a/test/image/baselines/legend_visibility.png b/test/image/baselines/legend_visibility.png index e80069a9c02..bbdb2156d96 100644 Binary files a/test/image/baselines/legend_visibility.png and b/test/image/baselines/legend_visibility.png differ diff --git a/test/image/baselines/map_symbol-text.png b/test/image/baselines/map_symbol-text.png index 9b8d497ae32..ba81a0652db 100644 Binary files a/test/image/baselines/map_symbol-text.png and b/test/image/baselines/map_symbol-text.png differ diff --git a/test/image/baselines/mult-yaxes-subplots-stacked.png b/test/image/baselines/mult-yaxes-subplots-stacked.png index 5aac4b389cd..855dcde1bf3 100644 Binary files a/test/image/baselines/mult-yaxes-subplots-stacked.png and b/test/image/baselines/mult-yaxes-subplots-stacked.png differ diff --git a/test/image/baselines/multicategory_series.png b/test/image/baselines/multicategory_series.png index dfbe24abe2e..7e4b0c8edf0 100644 Binary files a/test/image/baselines/multicategory_series.png and b/test/image/baselines/multicategory_series.png differ diff --git a/test/image/baselines/quiver_anchor.png b/test/image/baselines/quiver_anchor.png new file mode 100644 index 00000000000..d559c4d98b4 Binary files /dev/null and b/test/image/baselines/quiver_anchor.png differ diff --git a/test/image/baselines/quiver_arrow-styling.png b/test/image/baselines/quiver_arrow-styling.png new file mode 100644 index 00000000000..6792ad18054 Binary files /dev/null and b/test/image/baselines/quiver_arrow-styling.png differ diff --git a/test/image/baselines/quiver_categorical.png b/test/image/baselines/quiver_categorical.png new file mode 100644 index 00000000000..1c0d9e3b94a Binary files /dev/null and b/test/image/baselines/quiver_categorical.png differ diff --git a/test/image/baselines/quiver_colorscale.png b/test/image/baselines/quiver_colorscale.png new file mode 100644 index 00000000000..91667ded71f Binary files /dev/null and b/test/image/baselines/quiver_colorscale.png differ diff --git a/test/image/baselines/quiver_custom-colorscale.png b/test/image/baselines/quiver_custom-colorscale.png new file mode 100644 index 00000000000..1f4cc400bdb Binary files /dev/null and b/test/image/baselines/quiver_custom-colorscale.png differ diff --git a/test/image/baselines/quiver_multi-trace.png b/test/image/baselines/quiver_multi-trace.png new file mode 100644 index 00000000000..13ce4d6aa01 Binary files /dev/null and b/test/image/baselines/quiver_multi-trace.png differ diff --git a/test/image/baselines/quiver_simple.png b/test/image/baselines/quiver_simple.png new file mode 100644 index 00000000000..e36b0d54388 Binary files /dev/null and b/test/image/baselines/quiver_simple.png differ diff --git a/test/image/baselines/quiver_sizemode.png b/test/image/baselines/quiver_sizemode.png new file mode 100644 index 00000000000..bff61d48cea Binary files /dev/null and b/test/image/baselines/quiver_sizemode.png differ diff --git a/test/image/baselines/quiver_wind.png b/test/image/baselines/quiver_wind.png new file mode 100644 index 00000000000..ced4ea566bd Binary files /dev/null and b/test/image/baselines/quiver_wind.png differ diff --git a/test/image/baselines/quiver_zero-vectors.png b/test/image/baselines/quiver_zero-vectors.png new file mode 100644 index 00000000000..fddb563d1eb Binary files /dev/null and b/test/image/baselines/quiver_zero-vectors.png differ diff --git a/test/image/baselines/range_slider_legend_left.png b/test/image/baselines/range_slider_legend_left.png index 9eb5c4457ff..d35f8c99b28 100644 Binary files a/test/image/baselines/range_slider_legend_left.png and b/test/image/baselines/range_slider_legend_left.png differ diff --git a/test/image/baselines/splom_0.png b/test/image/baselines/splom_0.png index 64cb6360c33..90849761f94 100644 Binary files a/test/image/baselines/splom_0.png and b/test/image/baselines/splom_0.png differ diff --git a/test/image/baselines/splom_array-styles.png b/test/image/baselines/splom_array-styles.png index 58506263771..73af60eb0ba 100644 Binary files a/test/image/baselines/splom_array-styles.png and b/test/image/baselines/splom_array-styles.png differ diff --git a/test/image/baselines/splom_dates.png b/test/image/baselines/splom_dates.png index 830bd0fd863..5d671156356 100644 Binary files a/test/image/baselines/splom_dates.png and b/test/image/baselines/splom_dates.png differ diff --git a/test/image/baselines/splom_iris.png b/test/image/baselines/splom_iris.png index c6f01108f3f..cb54319d0b7 100644 Binary files a/test/image/baselines/splom_iris.png and b/test/image/baselines/splom_iris.png differ diff --git a/test/image/baselines/splom_large.png b/test/image/baselines/splom_large.png index 2596809d59e..a24c4d1223e 100644 Binary files a/test/image/baselines/splom_large.png and b/test/image/baselines/splom_large.png differ diff --git a/test/image/baselines/splom_log.png b/test/image/baselines/splom_log.png index 9f022f5212f..8031034e14d 100644 Binary files a/test/image/baselines/splom_log.png and b/test/image/baselines/splom_log.png differ diff --git a/test/image/baselines/splom_lower-nodiag.png b/test/image/baselines/splom_lower-nodiag.png index 754cae3eac3..1625f0e897a 100644 Binary files a/test/image/baselines/splom_lower-nodiag.png and b/test/image/baselines/splom_lower-nodiag.png differ diff --git a/test/image/baselines/splom_lower.png b/test/image/baselines/splom_lower.png index d19eb8f1ae5..fdc298a97d7 100644 Binary files a/test/image/baselines/splom_lower.png and b/test/image/baselines/splom_lower.png differ diff --git a/test/image/baselines/splom_mismatched-axis-types.png b/test/image/baselines/splom_mismatched-axis-types.png index f45cda7aa60..bf07860e121 100644 Binary files a/test/image/baselines/splom_mismatched-axis-types.png and b/test/image/baselines/splom_mismatched-axis-types.png differ diff --git a/test/image/baselines/splom_multi-axis-type.png b/test/image/baselines/splom_multi-axis-type.png index 45066de6fb9..556d920dd7c 100644 Binary files a/test/image/baselines/splom_multi-axis-type.png and b/test/image/baselines/splom_multi-axis-type.png differ diff --git a/test/image/baselines/splom_nodiag.png b/test/image/baselines/splom_nodiag.png index 7988f84e9b4..1cdcf1d553e 100644 Binary files a/test/image/baselines/splom_nodiag.png and b/test/image/baselines/splom_nodiag.png differ diff --git a/test/image/baselines/splom_ragged-via-axes.png b/test/image/baselines/splom_ragged-via-axes.png index e82fb0e8382..ec06707f464 100644 Binary files a/test/image/baselines/splom_ragged-via-axes.png and b/test/image/baselines/splom_ragged-via-axes.png differ diff --git a/test/image/baselines/splom_ragged-via-visible-false.png b/test/image/baselines/splom_ragged-via-visible-false.png index 549fc147f9b..c55adcadef3 100644 Binary files a/test/image/baselines/splom_ragged-via-visible-false.png and b/test/image/baselines/splom_ragged-via-visible-false.png differ diff --git a/test/image/baselines/splom_symbol_numbers.png b/test/image/baselines/splom_symbol_numbers.png index 23d5d703129..795c20a3698 100644 Binary files a/test/image/baselines/splom_symbol_numbers.png and b/test/image/baselines/splom_symbol_numbers.png differ diff --git a/test/image/baselines/splom_upper-nodiag.png b/test/image/baselines/splom_upper-nodiag.png index 77c7b48acc6..9552e7174c8 100644 Binary files a/test/image/baselines/splom_upper-nodiag.png and b/test/image/baselines/splom_upper-nodiag.png differ diff --git a/test/image/baselines/splom_upper.png b/test/image/baselines/splom_upper.png index 22524ac06ef..d013b8ba7ab 100644 Binary files a/test/image/baselines/splom_upper.png and b/test/image/baselines/splom_upper.png differ diff --git a/test/image/baselines/splom_with-cartesian.png b/test/image/baselines/splom_with-cartesian.png index c40495a487d..1c289aa9895 100644 Binary files a/test/image/baselines/splom_with-cartesian.png and b/test/image/baselines/splom_with-cartesian.png differ diff --git a/test/image/baselines/sunburst_branchvalues-total-almost-equal.png b/test/image/baselines/sunburst_branchvalues-total-almost-equal.png index 340322414d5..17ad71db731 100644 Binary files a/test/image/baselines/sunburst_branchvalues-total-almost-equal.png and b/test/image/baselines/sunburst_branchvalues-total-almost-equal.png differ diff --git a/test/image/baselines/sunburst_packages_colorscale_novalue.png b/test/image/baselines/sunburst_packages_colorscale_novalue.png index cf5010d997b..27c7abd4865 100644 Binary files a/test/image/baselines/sunburst_packages_colorscale_novalue.png and b/test/image/baselines/sunburst_packages_colorscale_novalue.png differ diff --git a/test/image/baselines/sunburst_values_colorscale.png b/test/image/baselines/sunburst_values_colorscale.png index 8cd4408a36c..9633aa73b35 100644 Binary files a/test/image/baselines/sunburst_values_colorscale.png and b/test/image/baselines/sunburst_values_colorscale.png differ diff --git a/test/image/baselines/text_on_shapes_basic.png b/test/image/baselines/text_on_shapes_basic.png index 6eb40a22944..23145ce0559 100644 Binary files a/test/image/baselines/text_on_shapes_basic.png and b/test/image/baselines/text_on_shapes_basic.png differ diff --git a/test/image/baselines/texttemplate.png b/test/image/baselines/texttemplate.png index cab575d81e2..83bb660ca18 100644 Binary files a/test/image/baselines/texttemplate.png and b/test/image/baselines/texttemplate.png differ diff --git a/test/image/baselines/treemap_packages_colorscale_novalue.png b/test/image/baselines/treemap_packages_colorscale_novalue.png index 5b1049417f1..dc5e341ea40 100644 Binary files a/test/image/baselines/treemap_packages_colorscale_novalue.png and b/test/image/baselines/treemap_packages_colorscale_novalue.png differ diff --git a/test/image/baselines/treemap_sunburst_marker_colors.png b/test/image/baselines/treemap_sunburst_marker_colors.png index 6a3823cf45d..9062a98a621 100644 Binary files a/test/image/baselines/treemap_sunburst_marker_colors.png and b/test/image/baselines/treemap_sunburst_marker_colors.png differ diff --git a/test/image/baselines/treemap_textfit.png b/test/image/baselines/treemap_textfit.png index 69db8266cf1..4c3df1328cd 100644 Binary files a/test/image/baselines/treemap_textfit.png and b/test/image/baselines/treemap_textfit.png differ diff --git a/test/image/baselines/treemap_values_colorscale.png b/test/image/baselines/treemap_values_colorscale.png index 71486fde4a7..8c55d1cc1ab 100644 Binary files a/test/image/baselines/treemap_values_colorscale.png and b/test/image/baselines/treemap_values_colorscale.png differ diff --git a/test/image/baselines/uniformtext_bar-like_10_auto.png b/test/image/baselines/uniformtext_bar-like_10_auto.png index c762c6ca00d..b87768a9b86 100644 Binary files a/test/image/baselines/uniformtext_bar-like_10_auto.png and b/test/image/baselines/uniformtext_bar-like_10_auto.png differ diff --git a/test/image/baselines/uniformtext_bar-like_8_horizontal.png b/test/image/baselines/uniformtext_bar-like_8_horizontal.png index 39d7db04a1c..be845b5e7c9 100644 Binary files a/test/image/baselines/uniformtext_bar-like_8_horizontal.png and b/test/image/baselines/uniformtext_bar-like_8_horizontal.png differ diff --git a/test/image/baselines/uniformtext_bar-like_8_textangle.png b/test/image/baselines/uniformtext_bar-like_8_textangle.png index 2bc7e3e2ec4..3ffbbec7d14 100644 Binary files a/test/image/baselines/uniformtext_bar-like_8_textangle.png and b/test/image/baselines/uniformtext_bar-like_8_textangle.png differ diff --git a/test/image/baselines/uniformtext_bar-like_8_textangle45.png b/test/image/baselines/uniformtext_bar-like_8_textangle45.png index e07fc43b066..ebb0f49c346 100644 Binary files a/test/image/baselines/uniformtext_bar-like_8_textangle45.png and b/test/image/baselines/uniformtext_bar-like_8_textangle45.png differ diff --git a/test/image/baselines/waterfall_axis.png b/test/image/baselines/waterfall_axis.png index 142a9726135..472f4304a18 100644 Binary files a/test/image/baselines/waterfall_axis.png and b/test/image/baselines/waterfall_axis.png differ diff --git a/test/image/baselines/waterfall_funnel_texttemplate_date.png b/test/image/baselines/waterfall_funnel_texttemplate_date.png index cacf1534808..48d8937b810 100644 Binary files a/test/image/baselines/waterfall_funnel_texttemplate_date.png and b/test/image/baselines/waterfall_funnel_texttemplate_date.png differ diff --git a/test/image/baselines/yaxis-over-yaxis2.png b/test/image/baselines/yaxis-over-yaxis2.png index 175f1c39adb..6d3398ef7aa 100644 Binary files a/test/image/baselines/yaxis-over-yaxis2.png and b/test/image/baselines/yaxis-over-yaxis2.png differ diff --git a/test/image/baselines/zerolinelayer_above.png b/test/image/baselines/zerolinelayer_above.png index 10fca3a7e8c..6e4490680da 100644 Binary files a/test/image/baselines/zerolinelayer_above.png and b/test/image/baselines/zerolinelayer_above.png differ diff --git a/test/image/baselines/zerolinelayer_below.png b/test/image/baselines/zerolinelayer_below.png index d011848fa65..9e43516c183 100644 Binary files a/test/image/baselines/zerolinelayer_below.png and b/test/image/baselines/zerolinelayer_below.png differ diff --git a/test/image/baselines/zsmooth_methods.png b/test/image/baselines/zsmooth_methods.png index 8fa01a6bc95..0f412056ea8 100644 Binary files a/test/image/baselines/zsmooth_methods.png and b/test/image/baselines/zsmooth_methods.png differ diff --git a/test/image/mocks/0.json b/test/image/mocks/0.json index e90b76c6ce7..27ace244904 100644 --- a/test/image/mocks/0.json +++ b/test/image/mocks/0.json @@ -1217,7 +1217,6 @@ "barmode": "stack", "bargap": 0.2, "bargroupgap": 0, - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/1.json b/test/image/mocks/1.json index b596e50725b..7143397dd41 100644 --- a/test/image/mocks/1.json +++ b/test/image/mocks/1.json @@ -609,7 +609,6 @@ "hovermode": "x", "dragmode": "zoom", "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/10.json b/test/image/mocks/10.json index ef04c40ce80..e30afa14ef2 100644 --- a/test/image/mocks/10.json +++ b/test/image/mocks/10.json @@ -256,7 +256,6 @@ "plot_bgcolor": "rgb(255, 255, 255)", "hovermode": "x", "dragmode": "zoom", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/11.json b/test/image/mocks/11.json index 4beffebfcba..5f54208389f 100644 --- a/test/image/mocks/11.json +++ b/test/image/mocks/11.json @@ -232,7 +232,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/12.json b/test/image/mocks/12.json index 9ce32986aab..7caba9957e3 100644 --- a/test/image/mocks/12.json +++ b/test/image/mocks/12.json @@ -505,7 +505,6 @@ "bargroupgap": 0, "boxmode": "overlay", "separators": ".,", - "hidesources": false, "selections": [ { "x0": 150, diff --git a/test/image/mocks/13.json b/test/image/mocks/13.json index a9986abe39e..b331c4c3d90 100644 --- a/test/image/mocks/13.json +++ b/test/image/mocks/13.json @@ -328,7 +328,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/14.json b/test/image/mocks/14.json index c0cc609271b..2d693a5ef31 100644 --- a/test/image/mocks/14.json +++ b/test/image/mocks/14.json @@ -335,7 +335,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/15.json b/test/image/mocks/15.json index 746fc3d151b..c43b2ed3663 100644 --- a/test/image/mocks/15.json +++ b/test/image/mocks/15.json @@ -270,7 +270,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/17.json b/test/image/mocks/17.json index 1af9c384072..c3bb5cc3c64 100644 --- a/test/image/mocks/17.json +++ b/test/image/mocks/17.json @@ -632,7 +632,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/18.json b/test/image/mocks/18.json index 56f0a87ba83..c907095293d 100644 --- a/test/image/mocks/18.json +++ b/test/image/mocks/18.json @@ -1235,7 +1235,6 @@ "bargroupgap": 0, "boxmode": "overlay", "separators": ".,", - "hidesources": false, "yaxis2": { "title": { "text": "sepal width", diff --git a/test/image/mocks/19.json b/test/image/mocks/19.json index 07716f2ac9b..bc7bf6781a5 100644 --- a/test/image/mocks/19.json +++ b/test/image/mocks/19.json @@ -153,7 +153,6 @@ "bargroupgap": 0, "boxmode": "overlay", "separators": ".,", - "hidesources": false, "yaxis2": { "title": { "text": "Click to enter Y2 axis title" diff --git a/test/image/mocks/21.json b/test/image/mocks/21.json index 9ea0382ec10..6f8790aacdf 100644 --- a/test/image/mocks/21.json +++ b/test/image/mocks/21.json @@ -485,7 +485,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/22.json b/test/image/mocks/22.json index f5e542baa14..24510019cd4 100644 --- a/test/image/mocks/22.json +++ b/test/image/mocks/22.json @@ -288,7 +288,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/23.json b/test/image/mocks/23.json index 7b8c1399747..40f153dd727 100644 --- a/test/image/mocks/23.json +++ b/test/image/mocks/23.json @@ -144,7 +144,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/24.json b/test/image/mocks/24.json index 5655fa5927d..3b92bf829d2 100644 --- a/test/image/mocks/24.json +++ b/test/image/mocks/24.json @@ -183,7 +183,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/25.json b/test/image/mocks/25.json index 5120213a6bf..0971b78d742 100644 --- a/test/image/mocks/25.json +++ b/test/image/mocks/25.json @@ -178,7 +178,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/26.json b/test/image/mocks/26.json index 631819e89b5..38ee0c42d44 100644 --- a/test/image/mocks/26.json +++ b/test/image/mocks/26.json @@ -21207,7 +21207,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/27.json b/test/image/mocks/27.json index 47132ef41f2..7e16bac359a 100644 --- a/test/image/mocks/27.json +++ b/test/image/mocks/27.json @@ -347,7 +347,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".", - "hidesources": false + "separators": "." } } diff --git a/test/image/mocks/28.json b/test/image/mocks/28.json index 0c85569c6d7..8e023b4a6cf 100644 --- a/test/image/mocks/28.json +++ b/test/image/mocks/28.json @@ -1002,7 +1002,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".", - "hidesources": false + "separators": "." } } diff --git a/test/image/mocks/29.json b/test/image/mocks/29.json index 40437f24529..75a0b56cab7 100644 --- a/test/image/mocks/29.json +++ b/test/image/mocks/29.json @@ -2284,7 +2284,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/30.json b/test/image/mocks/30.json index b7b13c6e93a..e08f2d648dd 100644 --- a/test/image/mocks/30.json +++ b/test/image/mocks/30.json @@ -198,7 +198,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/31.json b/test/image/mocks/31.json index 4160c2aa61f..cee23d0f566 100644 --- a/test/image/mocks/31.json +++ b/test/image/mocks/31.json @@ -381,7 +381,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/32.json b/test/image/mocks/32.json index ff3fbac3f81..7dfeffb9f3f 100644 --- a/test/image/mocks/32.json +++ b/test/image/mocks/32.json @@ -828,7 +828,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/4.json b/test/image/mocks/4.json index 480a51b0da8..180a775d76c 100644 --- a/test/image/mocks/4.json +++ b/test/image/mocks/4.json @@ -128,7 +128,6 @@ "plot_bgcolor": "#fff", "hovermode": "x", "dragmode": "zoom", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/5.json b/test/image/mocks/5.json index e270f69a1c2..5a0a885dc35 100644 --- a/test/image/mocks/5.json +++ b/test/image/mocks/5.json @@ -184,7 +184,6 @@ "plot_bgcolor": "#fff", "hovermode": "x", "dragmode": "zoom", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/color_syntax_formats.json b/test/image/mocks/color_syntax_formats.json new file mode 100644 index 00000000000..000da14f3a6 --- /dev/null +++ b/test/image/mocks/color_syntax_formats.json @@ -0,0 +1,114 @@ +{ + "data": [ + { + "type": "bar", + "name": "'#d62728' (hex 6)", + "x": [0], + "y": [3], + "marker": { "color": "#d62728" } + }, + { + "type": "bar", + "name": "'#1f77b4cc' (hex 8 alpha)", + "x": [1], + "y": [3], + "marker": { "color": "#1f77b4cc" } + }, + { + "type": "bar", + "name": "'#f00' (hex 3 short)", + "x": [2], + "y": [3], + "marker": { "color": "#f00" } + }, + { + "type": "bar", + "name": "'#0f08' (hex 4 short alpha)", + "x": [3], + "y": [3], + "marker": { "color": "#0f08" } + }, + { + "type": "bar", + "name": "'rgb(255 165 0)' (space)", + "x": [5], + "y": [3], + "marker": { "color": "rgb(255 165 0)" } + }, + { + "type": "bar", + "name": "'rgba(128 0 128 / 0.6)' (slash alpha)", + "x": [6], + "y": [3], + "marker": { "color": "rgba(128 0 128 / 0.6)" } + }, + { + "type": "bar", + "name": "'hsl(210, 80%, 50%)'", + "x": [8], + "y": [3], + "marker": { "color": "hsl(210, 80%, 50%)" } + }, + { + "type": "bar", + "name": "'hsla(0, 90%, 55%, 0.7)'", + "x": [9], + "y": [3], + "marker": { "color": "hsla(0, 90%, 55%, 0.7)" } + }, + { + "type": "bar", + "name": "'hsl(120deg 60% 40%)' (modern)", + "x": [10], + "y": [3], + "marker": { "color": "hsl(120deg 60% 40%)" } + }, + { + "type": "bar", + "name": "'hwb(200, 10%, 20%)'", + "x": [12], + "y": [3], + "marker": { "color": "hwb(200, 10%, 20%)" } + }, + { + "type": "bar", + "name": "'rebeccapurple' (named)", + "x": [13], + "y": [3], + "marker": { "color": "rebeccapurple" } + }, + { + "type": "bar", + "name": "'transparent'", + "x": [14], + "y": [3], + "marker": { + "color": "transparent", + "line": { "color": " #444 ", "width": 1 } + } + } + ], + "layout": { + "title": { "text": "Modern color syntax formats" }, + "barmode": "group", + "bargap": 0.1, + "width": 900, + "height": 500, + "paper_bgcolor": "rgb(250 250 250)", + "plot_bgcolor": "hsl(0, 0%, 98%)", + "xaxis": { + "tickmode": "array", + "tickvals": [1.5, 5.5, 9, 13], + "ticktext": ["hex", "rgb", "hsl", "other"], + "showgrid": false, + "range": [-1, 15] + }, + "yaxis": { "gridcolor": "#00000014" }, + "legend": { + "bgcolor": "#ffffffcc", + "bordercolor": "hwb(0deg, 50%, 50%)", + "borderwidth": 1 + }, + "font": { "color": " rgb(40, 40, 40) " } + } +} diff --git a/test/image/mocks/colorscale_opacity.json b/test/image/mocks/colorscale_opacity.json index 66076ff0681..5df28f8a383 100644 --- a/test/image/mocks/colorscale_opacity.json +++ b/test/image/mocks/colorscale_opacity.json @@ -99,7 +99,7 @@ "mode": "markers", "marker": { "size": 40, - "colorscale": [[0, "rgb(255,0.0,0.0)"], [1, "rgba(0.0,0.0,255,0.5)"]], + "colorscale": [[0, "rgb(255,0,0)"], [1, "rgba(0,0,255,0.5)"]], "color": [0, 1, 2, 3], "cmin": 0, "cmax": 3 diff --git a/test/image/mocks/contour_match_edges.json b/test/image/mocks/contour_match_edges.json index 25ce91fa987..5dc72abdef3 100644 --- a/test/image/mocks/contour_match_edges.json +++ b/test/image/mocks/contour_match_edges.json @@ -1926,7 +1926,6 @@ "exponentformat": "B" }, "bargroupgap": 0, - "hidesources": false, "showlegend": false, "separators": ".,", "barmode": "group", diff --git a/test/image/mocks/fonts.json b/test/image/mocks/fonts.json index 0fa9936bc96..9396bebd7fb 100644 --- a/test/image/mocks/fonts.json +++ b/test/image/mocks/fonts.json @@ -431,7 +431,6 @@ "anchor": "x", "exponentformat": "B" }, - "hidesources": false, "boxgroupgap": 0.3, "margin": { "b": 80, diff --git a/test/image/mocks/funnel_11.json b/test/image/mocks/funnel_11.json index 19ad721177b..f88ed26f027 100644 --- a/test/image/mocks/funnel_11.json +++ b/test/image/mocks/funnel_11.json @@ -120,7 +120,6 @@ "funnelmode": "group", "funnelgap": 0.2, "funnelgroupgap": 0, - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/gl2d_10.json b/test/image/mocks/gl2d_10.json index 9a92c24340a..978ed9a65e6 100644 --- a/test/image/mocks/gl2d_10.json +++ b/test/image/mocks/gl2d_10.json @@ -145,7 +145,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/gl2d_12.json b/test/image/mocks/gl2d_12.json index 4d9ec5b89e6..f9c68c3b802 100644 --- a/test/image/mocks/gl2d_12.json +++ b/test/image/mocks/gl2d_12.json @@ -502,7 +502,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/gl2d_14.json b/test/image/mocks/gl2d_14.json index afabbb187a7..4a62050c1f5 100644 --- a/test/image/mocks/gl2d_14.json +++ b/test/image/mocks/gl2d_14.json @@ -146,7 +146,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/gl2d_17.json b/test/image/mocks/gl2d_17.json index 4314f5a2666..ece827a386c 100644 --- a/test/image/mocks/gl2d_17.json +++ b/test/image/mocks/gl2d_17.json @@ -588,7 +588,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/gl2d_fonts.json b/test/image/mocks/gl2d_fonts.json index db60cecd75d..3f070cc6558 100644 --- a/test/image/mocks/gl2d_fonts.json +++ b/test/image/mocks/gl2d_fonts.json @@ -427,7 +427,6 @@ "bargroupgap": 0, "boxmode": "overlay", "boxgap": 0.3, - "boxgroupgap": 0.3, - "hidesources": false + "boxgroupgap": 0.3 } } diff --git a/test/image/mocks/gl2d_parcoords_style_labels.json b/test/image/mocks/gl2d_parcoords_style_labels.json index 5b675379383..4574e37075d 100644 --- a/test/image/mocks/gl2d_parcoords_style_labels.json +++ b/test/image/mocks/gl2d_parcoords_style_labels.json @@ -8,7 +8,7 @@ "size": 16 }, "rangefont": { - "color": "hsv(191,191,63)", + "color": "rgb(0, 131, 161)", "family": "Times New Roman", "size": 8 }, diff --git a/test/image/mocks/gl2d_scatter-subplot-panel.json b/test/image/mocks/gl2d_scatter-subplot-panel.json index dd9513a813c..43a26bb665d 100644 --- a/test/image/mocks/gl2d_scatter-subplot-panel.json +++ b/test/image/mocks/gl2d_scatter-subplot-panel.json @@ -3,8 +3,6 @@ { "uid": "ab6939", "yaxis": "y", - "ysrc": "jackp:17616:013c39", - "xsrc": "jackp:17616:7ad609", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -153,8 +151,6 @@ { "uid": "f17ffc", "yaxis": "y", - "ysrc": "jackp:17616:ee32d5", - "xsrc": "jackp:17616:0d67c1", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -335,8 +331,6 @@ { "uid": "dace31", "yaxis": "y", - "ysrc": "jackp:17616:3908ce", - "xsrc": "jackp:17616:45a03c", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -469,8 +463,6 @@ { "uid": "c6e1cb", "yaxis": "y", - "ysrc": "jackp:17616:1e013b", - "xsrc": "jackp:17616:4b5447", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -581,8 +573,6 @@ { "uid": "c62c21", "yaxis": "y", - "ysrc": "jackp:17616:479c89", - "xsrc": "jackp:17616:548eee", "marker": { "color": "rgb(148, 103, 189)", "line": { @@ -605,8 +595,6 @@ { "uid": "08893d", "yaxis": "y2", - "ysrc": "jackp:17616:36d993", - "xsrc": "jackp:17616:6d7fe8", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -745,8 +733,6 @@ { "uid": "fa9571", "yaxis": "y2", - "ysrc": "jackp:17616:89729a", - "xsrc": "jackp:17616:512573", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -895,8 +881,6 @@ { "uid": "7677a5", "yaxis": "y2", - "ysrc": "jackp:17616:567114", - "xsrc": "jackp:17616:2bf765", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -1017,8 +1001,6 @@ { "uid": "59b4c9", "yaxis": "y2", - "ysrc": "jackp:17616:42cadc", - "xsrc": "jackp:17616:1ea406", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -1125,8 +1107,6 @@ { "uid": "524443", "yaxis": "y2", - "ysrc": "jackp:17616:b896d3", - "xsrc": "jackp:17616:0f5f52", "marker": { "color": "rgb(148, 103, 189)", "line": { @@ -1150,8 +1130,6 @@ { "uid": "0481fb", "yaxis": "y3", - "ysrc": "jackp:17616:474ec3", - "xsrc": "jackp:17616:36d4e6", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -1276,8 +1254,6 @@ { "uid": "ea480c", "yaxis": "y3", - "ysrc": "jackp:17616:d4eb68", - "xsrc": "jackp:17616:856c9d", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -1412,8 +1388,6 @@ { "uid": "b16b7f", "yaxis": "y3", - "ysrc": "jackp:17616:6e5c39", - "xsrc": "jackp:17616:f6b328", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -1533,8 +1507,6 @@ { "uid": "c6d9fa", "yaxis": "y3", - "ysrc": "jackp:17616:b8c075", - "xsrc": "jackp:17616:e7d470", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -1649,8 +1621,6 @@ { "uid": "c631a8", "yaxis": "y3", - "ysrc": "jackp:17616:63bc1a", - "xsrc": "jackp:17616:106531", "marker": { "color": "rgb(148, 103, 189)", "line": { @@ -1677,8 +1647,6 @@ { "uid": "b906f7", "yaxis": "y4", - "ysrc": "jackp:17616:292289", - "xsrc": "jackp:17616:878a2c", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -1817,8 +1785,6 @@ { "uid": "d2a84e", "yaxis": "y4", - "ysrc": "jackp:17616:c068e9", - "xsrc": "jackp:17616:0d9a13", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -1977,8 +1943,6 @@ { "uid": "732989", "yaxis": "y4", - "ysrc": "jackp:17616:262a53", - "xsrc": "jackp:17616:30666d", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -2101,8 +2065,6 @@ { "uid": "6a8130", "yaxis": "y4", - "ysrc": "jackp:17616:cecf5b", - "xsrc": "jackp:17616:8d8322", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -2150,8 +2112,6 @@ "showlegend": false, "uid": "29557f", "yaxis": "y4", - "ysrc": "jackp:17616:1f8d2e", - "xsrc": "jackp:17616:1dd020", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -2169,8 +2129,6 @@ "showlegend": false, "uid": "3e367a", "yaxis": "y4", - "ysrc": "jackp:17616:1f8d2e", - "xsrc": "jackp:17616:1dd020", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -2188,8 +2146,6 @@ "showlegend": false, "uid": "337db2", "yaxis": "y4", - "ysrc": "jackp:17616:1f8d2e", - "xsrc": "jackp:17616:1dd020", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -2207,8 +2163,6 @@ "showlegend": false, "uid": "daacfd", "yaxis": "y4", - "ysrc": "jackp:17616:1f8d2e", - "xsrc": "jackp:17616:1dd020", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -2226,8 +2180,6 @@ "showlegend": false, "uid": "ec7e38", "yaxis": "y4", - "ysrc": "jackp:17616:1f8d2e", - "xsrc": "jackp:17616:1dd020", "marker": { "color": "rgb(148, 103, 189)", "line": { @@ -2244,8 +2196,6 @@ { "uid": "4c0c61", "yaxis": "y5", - "ysrc": "jackp:17616:e2020b", - "xsrc": "jackp:17616:097e51", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -2382,8 +2332,6 @@ { "uid": "0224d9", "yaxis": "y5", - "ysrc": "jackp:17616:7a9127", - "xsrc": "jackp:17616:0baf91", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -2542,8 +2490,6 @@ { "uid": "631b1f", "yaxis": "y5", - "ysrc": "jackp:17616:8e2b9c", - "xsrc": "jackp:17616:87a56a", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -2674,8 +2620,6 @@ { "uid": "92020c", "yaxis": "y5", - "ysrc": "jackp:17616:d23bb6", - "xsrc": "jackp:17616:b1d52c", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -2788,8 +2732,6 @@ { "uid": "537fed", "yaxis": "y5", - "ysrc": "jackp:17616:3c7520", - "xsrc": "jackp:17616:b91412", "marker": { "color": "rgb(148, 103, 189)", "line": { @@ -2818,8 +2760,6 @@ { "uid": "f44104", "yaxis": "y6", - "ysrc": "jackp:17616:3c2a0b", - "xsrc": "jackp:17616:19613b", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -2958,8 +2898,6 @@ { "uid": "8fb1ff", "yaxis": "y6", - "ysrc": "jackp:17616:aca112", - "xsrc": "jackp:17616:1f9da8", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -3124,8 +3062,6 @@ { "uid": "e676c7", "yaxis": "y6", - "ysrc": "jackp:17616:24335b", - "xsrc": "jackp:17616:2f0d1f", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -3258,8 +3194,6 @@ { "uid": "0df67e", "yaxis": "y6", - "ysrc": "jackp:17616:ab87d8", - "xsrc": "jackp:17616:5cf5f8", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -3376,8 +3310,6 @@ { "uid": "182eac", "yaxis": "y6", - "ysrc": "jackp:17616:601f7d", - "xsrc": "jackp:17616:12eb26", "marker": { "color": "rgb(148, 103, 189)", "line": { @@ -3404,8 +3336,6 @@ { "uid": "376ffd", "yaxis": "y7", - "ysrc": "jackp:17616:375858", - "xsrc": "jackp:17616:725e8e", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -3516,8 +3446,6 @@ { "uid": "5d7bed", "yaxis": "y7", - "ysrc": "jackp:17616:a2b0f6", - "xsrc": "jackp:17616:9cbb59", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -3630,8 +3558,6 @@ { "uid": "1b9a1f", "yaxis": "y7", - "ysrc": "jackp:17616:93c145", - "xsrc": "jackp:17616:4bf754", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -3742,8 +3668,6 @@ { "uid": "26c716", "yaxis": "y7", - "ysrc": "jackp:17616:ec6fcf", - "xsrc": "jackp:17616:6fd863", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -3850,8 +3774,6 @@ { "uid": "db52b5", "yaxis": "y7", - "ysrc": "jackp:17616:e406b3", - "xsrc": "jackp:17616:1f1b53", "marker": { "color": "rgb(148, 103, 189)", "line": { diff --git a/test/image/mocks/gl3d_opacity-surface.json b/test/image/mocks/gl3d_opacity-surface.json index d766bf1aa0d..004f68b9bb4 100644 --- a/test/image/mocks/gl3d_opacity-surface.json +++ b/test/image/mocks/gl3d_opacity-surface.json @@ -1528,7 +1528,6 @@ } ], "layout": { - "hidesources": false, "autosize": true, "font": { "color": "#444", diff --git a/test/image/mocks/legend_horizontal.json b/test/image/mocks/legend_horizontal.json index e669c32dd94..901abb33b1e 100644 --- a/test/image/mocks/legend_horizontal.json +++ b/test/image/mocks/legend_horizontal.json @@ -137,7 +137,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/quiver_anchor.json b/test/image/mocks/quiver_anchor.json new file mode 100644 index 00000000000..db647e0059a --- /dev/null +++ b/test/image/mocks/quiver_anchor.json @@ -0,0 +1,83 @@ +{ + "data": [ + { + "type": "quiver", + "name": "tail anchor", + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 1, 1, 1, 1, 1, 1, 1, 1], + "v": [1, 1, 1, 1, 1, 1, 1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.4, + "anchor": "tail", + "marker": { + "color": "red", + "line": {"width": 2} + }, + "xaxis": "x", + "yaxis": "y" + }, + { + "type": "quiver", + "name": "tip anchor", + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 1, 1, 1, 1, 1, 1, 1, 1], + "v": [1, 1, 1, 1, 1, 1, 1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.4, + "anchor": "tip", + "marker": { + "color": "blue", + "line": {"width": 2} + }, + "xaxis": "x2", + "yaxis": "y2" + }, + { + "type": "quiver", + "name": "center anchor", + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 1, 1, 1, 1, 1, 1, 1, 1], + "v": [1, 1, 1, 1, 1, 1, 1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.4, + "anchor": "center", + "marker": { + "color": "green", + "line": {"width": 2} + }, + "xaxis": "x3", + "yaxis": "y3" + } + ], + "layout": { + "width": 900, + "height": 400, + "showlegend": true, + "xaxis": { + "domain": [0, 0.3], + "title": {"text": "tail anchor"} + }, + "yaxis": { + "domain": [0, 1] + }, + "xaxis2": { + "domain": [0.35, 0.65], + "title": {"text": "tip anchor"} + }, + "yaxis2": { + "domain": [0, 1], + "anchor": "x2" + }, + "xaxis3": { + "domain": [0.7, 1], + "title": {"text": "center anchor"} + }, + "yaxis3": { + "domain": [0, 1], + "anchor": "x3" + } + } +} diff --git a/test/image/mocks/quiver_arrow-styling.json b/test/image/mocks/quiver_arrow-styling.json new file mode 100644 index 00000000000..db51a45a8f3 --- /dev/null +++ b/test/image/mocks/quiver_arrow-styling.json @@ -0,0 +1,57 @@ +{ + "data": [ + { + "type": "quiver", + "name": "small arrows", + "x": [0, 1, 2], + "y": [0, 0, 0], + "u": [1, 1, 1], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tail", + "marker": { + "color": "red", + "arrowsize": 0.5, + "line": {"width": 1} + } + }, + { + "type": "quiver", + "name": "medium arrows", + "x": [0, 1, 2], + "y": [1, 1, 1], + "u": [1, 1, 1], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tail", + "marker": { + "color": "blue", + "arrowsize": 1.0, + "line": {"width": 2} + } + }, + { + "type": "quiver", + "name": "large arrows", + "x": [0, 1, 2], + "y": [2, 2, 2], + "u": [1, 1, 1], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tail", + "marker": { + "color": "green", + "arrowsize": 2.0, + "line": {"width": 3} + } + } + ], + "layout": { + "width": 500, + "height": 600, + "showlegend": true + } +} diff --git a/test/image/mocks/quiver_categorical.json b/test/image/mocks/quiver_categorical.json new file mode 100644 index 00000000000..5dcd3de9f23 --- /dev/null +++ b/test/image/mocks/quiver_categorical.json @@ -0,0 +1,22 @@ +{ + "data": [ + { + "type": "quiver", + "x": ["A", "B", "C", "A", "B", "C", "A", "B", "C"], + "y": ["X", "X", "X", "Y", "Y", "Y", "Z", "Z", "Z"], + "u": [1, 0, -1, 1, 0, -1, 1, 0, -1], + "v": [1, 1, 1, 0, 0, 0, -1, -1, -1], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tail", + "marker": { + "line": {"width": 2} + } + } + ], + "layout": { + "title": {"text": "Quiver with Categorical Axes"}, + "width": 500, + "height": 500 + } +} diff --git a/test/image/mocks/quiver_colorscale.json b/test/image/mocks/quiver_colorscale.json new file mode 100644 index 00000000000..48e3278a5b9 --- /dev/null +++ b/test/image/mocks/quiver_colorscale.json @@ -0,0 +1,27 @@ +{ + "data": [ + { + "type": "quiver", + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 2, 3, 1, 2, 3, 1, 2, 3], + "v": [1, 1, 1, 2, 2, 2, 3, 3, 3], + "sizemode": "scaled", + "sizeref": 0.3, + "anchor": "tail", + "marker": { + "color": [1.41, 2.24, 3.16, 2.24, 2.83, 3.61, 3.16, 3.61, 4.24], + "colorscale": "Viridis", + "showscale": true, + "colorbar": { + "title": {"text": "Magnitude"} + }, + "line": {"width": 2} + } + } + ], + "layout": { + "width": 600, + "height": 500 + } +} diff --git a/test/image/mocks/quiver_custom-colorscale.json b/test/image/mocks/quiver_custom-colorscale.json new file mode 100644 index 00000000000..f1cf7dc2bc1 --- /dev/null +++ b/test/image/mocks/quiver_custom-colorscale.json @@ -0,0 +1,33 @@ +{ + "data": [ + { + "type": "quiver", + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [0.5, 1.5, 2.5, 0.5, 1.5, 2.5, 0.5, 1.5, 2.5], + "v": [0.5, 0.5, 0.5, 1.5, 1.5, 1.5, 2.5, 2.5, 2.5], + "marker": { + "color": [1, 2, 3, 2, 3, 4, 3, 4, 5], + "colorscale": [ + [0, "rgb(0,0,255)"], + [0.5, "rgb(0,255,0)"], + [1, "rgb(255,0,0)"] + ], + "showscale": true, + "colorbar": { + "title": {"text": "Custom Field"}, + "x": 1.02 + }, + "line": {"width": 2} + }, + "sizemode": "scaled", + "sizeref": 0.25, + "anchor": "tail" + } + ], + "layout": { + "title": {"text": "Quiver with Custom Scalar Field"}, + "width": 600, + "height": 500 + } +} diff --git a/test/image/mocks/quiver_multi-trace.json b/test/image/mocks/quiver_multi-trace.json new file mode 100644 index 00000000000..0b90fb70663 --- /dev/null +++ b/test/image/mocks/quiver_multi-trace.json @@ -0,0 +1,40 @@ +{ + "data": [ + { + "type": "quiver", + "name": "Field A", + "x": [0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1], + "u": [1, 1.5, 2, 1, 1.5, 2], + "v": [0.5, 1, 0.5, 1, 1.5, 1], + "sizemode": "scaled", + "sizeref": 0.4, + "anchor": "tail", + "marker": { + "color": "red", + "line": {"width": 2} + } + }, + { + "type": "quiver", + "name": "Field B", + "x": [3, 4, 5, 3, 4, 5], + "y": [0, 0, 0, 1, 1, 1], + "u": [-1, -1.5, -2, -1, -1.5, -2], + "v": [1, 0.5, 1, 0.5, 1, 0.5], + "sizemode": "scaled", + "sizeref": 0.4, + "anchor": "tail", + "marker": { + "color": "blue", + "line": {"width": 2} + } + } + ], + "layout": { + "title": {"text": "Multiple Quiver Traces"}, + "width": 700, + "height": 500, + "showlegend": true + } +} diff --git a/test/image/mocks/quiver_simple.json b/test/image/mocks/quiver_simple.json new file mode 100644 index 00000000000..c3e72e8c85f --- /dev/null +++ b/test/image/mocks/quiver_simple.json @@ -0,0 +1,24 @@ +{ + "data": [ + { + "type": "quiver", + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 0, -1, 1, 0, -1, 1, 0, -1], + "v": [0, 1, 0, 0, 1, 0, 0, 1, 0], + "text": ["A", "B", "C", "D", "E", "F", "G", "H", "I"], + "textposition": "top center", + "textfont": { "size": 12 }, + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tail", + "marker": { + "line": {"width": 2} + } + } + ], + "layout": { + "width": 500, + "height": 500 + } +} diff --git a/test/image/mocks/quiver_sizemode.json b/test/image/mocks/quiver_sizemode.json new file mode 100644 index 00000000000..f7e1d1cb4c9 --- /dev/null +++ b/test/image/mocks/quiver_sizemode.json @@ -0,0 +1,83 @@ +{ + "data": [ + { + "type": "quiver", + "name": "scaled", + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 2, 3, 1, 2, 3, 1, 2, 3], + "v": [1, 1, 1, 1, 1, 1, 1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.4, + "anchor": "tail", + "marker": { + "color": "red", + "line": {"width": 2} + }, + "xaxis": "x", + "yaxis": "y" + }, + { + "type": "quiver", + "name": "absolute", + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 2, 3, 1, 2, 3, 1, 2, 3], + "v": [1, 1, 1, 1, 1, 1, 1, 1, 1], + "sizemode": "absolute", + "sizeref": 0.15, + "anchor": "tail", + "marker": { + "color": "blue", + "line": {"width": 2} + }, + "xaxis": "x2", + "yaxis": "y2" + }, + { + "type": "quiver", + "name": "raw", + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [0.3, 0.6, 0.9, 0.3, 0.6, 0.9, 0.3, 0.6, 0.9], + "v": [0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3], + "sizemode": "raw", + "sizeref": 0.6, + "anchor": "tail", + "marker": { + "color": "green", + "line": {"width": 2} + }, + "xaxis": "x3", + "yaxis": "y3" + } + ], + "layout": { + "width": 800, + "height": 400, + "showlegend": true, + "xaxis": { + "domain": [0, 0.3], + "title": {"text": "scaled"} + }, + "yaxis": { + "domain": [0, 1] + }, + "xaxis2": { + "domain": [0.35, 0.65], + "title": {"text": "absolute"} + }, + "yaxis2": { + "domain": [0, 1], + "anchor": "x2" + }, + "xaxis3": { + "domain": [0.7, 1], + "title": {"text": "raw"} + }, + "yaxis3": { + "domain": [0, 1], + "anchor": "x3" + } + } +} diff --git a/test/image/mocks/quiver_wind.json b/test/image/mocks/quiver_wind.json new file mode 100644 index 00000000000..8d5ea5d8a08 --- /dev/null +++ b/test/image/mocks/quiver_wind.json @@ -0,0 +1,51 @@ +{ + "data": [ + { + "type": "quiver", + "name": "Wind field", + "x": [0, 0.5, 1, 1.5, 2, 2.5, 3, + 0, 0.5, 1, 1.5, 2, 2.5, 3, + 0, 0.5, 1, 1.5, 2, 2.5, 3, + 0, 0.5, 1, 1.5, 2, 2.5, 3, + 0, 0.5, 1, 1.5, 2, 2.5, 3], + "y": [0, 0, 0, 0, 0, 0, 0, + 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, + 1, 1, 1, 1, 1, 1, 1, + 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, + 2, 2, 2, 2, 2, 2, 2], + "u": [1, 1.5, 2, 2.5, 3, 2.5, 2, + 0.8, 1.2, 1.8, 2.2, 2.8, 2.2, 1.8, + 0.5, 1, 1.5, 2, 2.5, 2, 1.5, + 0.3, 0.8, 1.2, 1.8, 2.2, 1.8, 1.2, + 0.1, 0.5, 1, 1.5, 2, 1.5, 1], + "v": [0.2, 0.3, 0.5, 0.8, 1, 0.8, 0.5, + 0.5, 0.8, 1, 1.2, 1.5, 1.2, 1, + 0.8, 1.2, 1.5, 1.8, 2, 1.8, 1.5, + 0.5, 0.8, 1.2, 1.5, 1.8, 1.5, 1.2, + 0.2, 0.5, 0.8, 1.2, 1.5, 1.2, 0.8], + "sizemode": "scaled", + "sizeref": 0.2, + "anchor": "center", + "marker": { + "colorscale": "Jet", + "showscale": true, + "colorbar": { + "title": {"text": "Speed"}, + "x": 1.02 + }, + "line": {"width": 1.5} + } + } + ], + "layout": { + "title": {"text": "Vector Wind Field Visualization"}, + "width": 700, + "height": 600, + "xaxis": { + "title": {"text": "X"} + }, + "yaxis": { + "title": {"text": "Y"} + } + } +} diff --git a/test/image/mocks/quiver_zero-vectors.json b/test/image/mocks/quiver_zero-vectors.json new file mode 100644 index 00000000000..9c2af92d228 --- /dev/null +++ b/test/image/mocks/quiver_zero-vectors.json @@ -0,0 +1,24 @@ +{ + "data": [ + { + "type": "quiver", + "name": "Mixed vectors", + "x": [0, 1, 2, 3, 4], + "y": [1, 1, 1, 1, 1], + "u": [1, 0, 0, 1, 2], + "v": [1, 0, 0, 1, 2], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tail", + "marker": { + "color": "purple", + "line": {"width": 2} + } + } + ], + "layout": { + "title": {"text": "Quiver with Zero-Length Vectors"}, + "width": 600, + "height": 400 + } +} diff --git a/test/image/mocks/shapes_layer_below_traces.json b/test/image/mocks/shapes_layer_below_traces.json index 9b221568538..049b66b9c4c 100644 --- a/test/image/mocks/shapes_layer_below_traces.json +++ b/test/image/mocks/shapes_layer_below_traces.json @@ -103,7 +103,8 @@ "yaxis2": { "gridwidth": 2, "side": "right", - "overlaying": "y" + "overlaying": "y", + "tickmode": "auto" } } } diff --git a/test/image/mocks/text_export.json b/test/image/mocks/text_export.json index ccdd75161cb..0b217d86cc6 100644 --- a/test/image/mocks/text_export.json +++ b/test/image/mocks/text_export.json @@ -1670,7 +1670,6 @@ "size": 12 }, "height": 630, - "hidesources": false, "hovermode": "x", "legend": { "x": 0.5392124763053593, diff --git a/test/image/mocks/titles-avoid-labels.json b/test/image/mocks/titles-avoid-labels.json index 0dedfd45deb..be481791c2b 100644 --- a/test/image/mocks/titles-avoid-labels.json +++ b/test/image/mocks/titles-avoid-labels.json @@ -140,7 +140,6 @@ "dragmode": "zoom", "hovermode": "x", "separators": ".,", - "hidesources": false, "showlegend": false } } diff --git a/test/image/mocks/waterfall_11.json b/test/image/mocks/waterfall_11.json index 3babb9d306d..0242cbc48c6 100644 --- a/test/image/mocks/waterfall_11.json +++ b/test/image/mocks/waterfall_11.json @@ -133,7 +133,6 @@ "waterfallmode": "group", "waterfallgap": 0.2, "waterfallgroupgap": 0.1, - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/jasmine/assets/mock_lists.js b/test/jasmine/assets/mock_lists.js index bf93191c0c3..ade9429a6e5 100644 --- a/test/jasmine/assets/mock_lists.js +++ b/test/jasmine/assets/mock_lists.js @@ -28,6 +28,7 @@ var svgMockList = [ ['layout-colorway', require('../../image/mocks/layout-colorway.json')], ['multicategory', require('../../image/mocks/multicategory.json')], ['polar_categories', require('../../image/mocks/polar_categories.json')], + ['quiver_simple', require('../../image/mocks/quiver_simple.json')], ['polar_direction', require('../../image/mocks/polar_direction.json')], ['polar_wind-rose', require('../../image/mocks/polar_wind-rose.json')], ['range_selector_style', require('../../image/mocks/range_selector_style.json')], diff --git a/test/jasmine/tests/annotations_test.js b/test/jasmine/tests/annotations_test.js index 658fcdd78de..b9d185c5bed 100644 --- a/test/jasmine/tests/annotations_test.js +++ b/test/jasmine/tests/annotations_test.js @@ -1440,11 +1440,11 @@ describe('annotation effects', function() { .then(function() { expect(gd._fullLayout.annotations[0].hoverlabel).toEqual({ bgcolor: '#444', - bordercolor: '#fff', + bordercolor: 'rgb(255, 255, 255)', font: { family: 'Arial, sans-serif', size: 13, - color: '#fff', + color: 'rgb(255, 255, 255)', weight: 'normal', style: 'normal', variant: 'normal', diff --git a/test/jasmine/tests/axes_test.js b/test/jasmine/tests/axes_test.js index 3d1e962312f..17c22f7c937 100644 --- a/test/jasmine/tests/axes_test.js +++ b/test/jasmine/tests/axes_test.js @@ -7,7 +7,6 @@ var Plots = require('../../../src/plots/plots'); var Lib = require('../../../src/lib'); var Loggers = require('../../../src/lib/loggers'); var Color = require('../../../src/components/color'); -var tinycolor = require('tinycolor2'); var handleTickValueDefaults = require('../../../src/plots/cartesian/tick_value_defaults'); var Cartesian = require('../../../src/plots/cartesian'); @@ -467,11 +466,11 @@ describe('Test axes', function() { yaxis: {} }; supplyLayoutDefaults(layoutIn, layoutOut, fullData); - var lightLine = tinycolor(Color.lightLine).toRgbString(); + var lightLine = Color.color(Color.lightLine).rgb().string(); expect(layoutOut.xaxis.gridwidth).toBe(1); - expect(tinycolor(layoutOut.xaxis.gridcolor).toRgbString()).toBe(lightLine); + expect(Color.color(layoutOut.xaxis.gridcolor).rgb().string()).toBe(lightLine); expect(layoutOut.yaxis.gridwidth).toBe(1); - expect(tinycolor(layoutOut.yaxis.gridcolor).toRgbString()).toBe(lightLine); + expect(Color.color(layoutOut.yaxis.gridcolor).rgb().string()).toBe(lightLine); }); it('should set gridcolor/gridwidth to undefined if showgrid is false', function() { @@ -566,11 +565,9 @@ describe('Test axes', function() { var frac = 100 * (0xe - 0x4) / (0xf - 0x4); supplyLayoutDefaults(layoutIn, layoutOut, fullData); - expect(layoutOut.xaxis.gridcolor) - .toEqual(tinycolor.mix('red', bgColor, frac).toRgbString()); + expect(layoutOut.xaxis.gridcolor).toEqual(Color.mix('red', bgColor, frac)); expect(layoutOut.yaxis.gridcolor).toEqual('blue'); - expect(layoutOut.yaxis2.gridcolor) - .toEqual(tinycolor.mix('#444', bgColor, frac).toRgbString()); + expect(layoutOut.yaxis2.gridcolor).toEqual(Color.mix('#444', bgColor, frac)); }); it('should default to a dark color for tickfont when plotting background is light', function() { @@ -583,7 +580,7 @@ describe('Test axes', function() { }; supplyLayoutDefaults(layoutIn, layoutOut, fullData); - expect(layoutOut.xaxis.tickfont.color).toEqual('#444'); + expect(layoutOut.xaxis.tickfont.color).toEqual('rgb(68, 68, 68)'); }); it('should default to a light color for tickfont when plotting background is dark', function() { @@ -596,7 +593,7 @@ describe('Test axes', function() { }; supplyLayoutDefaults(layoutIn, layoutOut, fullData); - expect(layoutOut.xaxis.tickfont.color).toEqual('#fff'); + expect(layoutOut.xaxis.tickfont.color).toEqual('rgb(255, 255, 255)'); }); it('should not coerce ticklabelposition on *multicategory* axes for now', function() { @@ -8416,4 +8413,33 @@ describe('test tickmode calculator', function() { }).then(done, done.fail); }); }); + + describe('sync', function() { + it('shows the exponent on a synced overlaying axis with showexponent *first*/*last*', function(done) { + Plotly.newPlot(gd, { + data: [ + {y: [0, 6]}, + {y: [0, 60000], yaxis: 'y2'} + ], + layout: { + yaxis2: { + overlaying: 'y', + exponentformat: 'SI', + showexponent: 'last' + } + } + }).then(function() { + var ax = gd._fullLayout.yaxis2; + expect(ax.tickmode).toBe('sync'); + + var labels = ax._vals + .filter(function(d) { return !d.minor; }) + .map(function(d) { return d.text; }); + + // the multiplier (e.g. 'k') must still appear on the labelled tick + expect(labels.some(function(t) { return /k$/.test(t); })) + .toBe(true, 'expected an SI prefix in: ' + JSON.stringify(labels)); + }).then(done, done.fail); + }); + }); }); diff --git a/test/jasmine/tests/bar_test.js b/test/jasmine/tests/bar_test.js index 107021ba1cd..c90e15832b8 100644 --- a/test/jasmine/tests/bar_test.js +++ b/test/jasmine/tests/bar_test.js @@ -312,7 +312,7 @@ describe('Bar.supplyDefaults', function() { supplyDefaults(traceIn, traceOut, defaultColor, layout); expect(traceOut.marker.pattern.bgcolor).toBe('green'); - expect(traceOut.marker.pattern.fgcolor).toBe('#fff'); + expect(traceOut.marker.pattern.fgcolor).toBe('rgb(255, 255, 255)'); expect(traceOut.marker.pattern.fgopacity).toBe(0.5); }); diff --git a/test/jasmine/tests/color_test.js b/test/jasmine/tests/color_test.js index 990092529b7..28a2dc41bf6 100644 --- a/test/jasmine/tests/color_test.js +++ b/test/jasmine/tests/color_test.js @@ -4,148 +4,6 @@ var Color = require('../../../src/components/color'); describe('Test color:', function() { 'use strict'; - describe('clean', function() { - it('should turn rgb and rgba fractions into 0-255 values', function() { - var container = { - rgbcolor: 'rgb(0.3, 0.6, 0.9)', - rgbacolor: 'rgba(0.2, 0.4, 0.6, 0.8)' - }; - var expectedContainer = { - rgbcolor: 'rgb(77, 153, 230)', - rgbacolor: 'rgba(51, 102, 153, 0.8)' - }; - - Color.clean(container); - expect(container).toEqual(expectedContainer); - }); - - it('should dive into objects, arrays, and colorscales', function() { - var container = { - color: ['rgb(0.3, 0.6, 0.9)', 'rgba(0.2, 0.4, 0.6, 0.8)'], - nest: { - acolor: 'rgb(0.1, 0.2, 0.3)', - astring: 'rgb(0.1, 0.2, 0.3)' - }, - objarray: [ - {color: 'rgb(0.1, 0.2, 0.3)'}, - {color: 'rgb(0.3, 0.6, 0.9)'} - ], - somecolorscale: [ - [0, 'rgb(0.1, 0.2, 0.3)'], - [1, 'rgb(0.3, 0.6, 0.9)'] - ] - }; - var expectedContainer = { - color: ['rgb(77, 153, 230)', 'rgba(51, 102, 153, 0.8)'], - nest: { - acolor: 'rgb(26, 51, 77)', - astring: 'rgb(0.1, 0.2, 0.3)' - }, - objarray: [ - {color: 'rgb(26, 51, 77)'}, - {color: 'rgb(77, 153, 230)'} - ], - somecolorscale: [ - [0, 'rgb(26, 51, 77)'], - [1, 'rgb(77, 153, 230)'] - ] - }; - - Color.clean(container); - expect(container).toEqual(expectedContainer); - }); - - it('should count 0 as a fraction but not 1, except in alpha', function() { - // this is weird... but old tinycolor actually breaks - // if you pass in a 1, while in some cases a 1 here - // could be ambiguous - so we treat it as a real 1. - var container = { - fractioncolor: 'rgb(0, 0.4, 0.8)', - regularcolor: 'rgb(1, 0.5, 0.5)', - fractionrgbacolor: 'rgba(0, 0.4, 0.8, 1)' - }; - var expectedContainer = { - fractioncolor: 'rgb(0, 102, 204)', - regularcolor: 'rgb(1, 0.5, 0.5)', - fractionrgbacolor: 'rgba(0, 102, 204, 1)' - }; - - Color.clean(container); - expect(container).toEqual(expectedContainer); - }); - - it('should allow extra whitespace or space instead of commas', function() { - var container = { - rgbcolor: ' \t\r\n rgb \r\t\n ( 0.3\t\n,\t 0.6\n\n,\n 0.9\n\n)\r\t\n\t ', - rgb2color: 'rgb(0.3 0.6 0.9)', - rgbacolor: ' \t\r\n rgba \r\t\n ( 0.2\t\n,\t 0.4\n\n,\n 0.6\n\n , 0.8 )\r\t\n\t ' - }; - var expectedContainer = { - rgbcolor: 'rgb(77, 153, 230)', - rgb2color: 'rgb(77, 153, 230)', - rgbacolor: 'rgba(51, 102, 153, 0.8)' - }; - - Color.clean(container); - expect(container).toEqual(expectedContainer); - }); - - it('should not change if r, g, b >= 1 but clip alpha > 1', function() { - var container = { - rgbcolor: 'rgb(0.1, 1.0, 0.5)', - rgbacolor: 'rgba(0.1, 1.0, 0.5, 1234)', - rgba2color: 'rgba(0.1, 0.2, 0.5, 1234)' - }; - var expectedContainer = { - rgbcolor: 'rgb(0.1, 1.0, 0.5)', - rgbacolor: 'rgba(0.1, 1.0, 0.5, 1234)', - rgba2color: 'rgba(26, 51, 128, 1)' - }; - - Color.clean(container); - expect(container).toEqual(expectedContainer); - }); - - it('should not alter malformed strings or non-color keys', function() { - var container = { - color2: 'rgb(0.1, 0.1, 0.1)', - acolor: 'rgbb(0.1, 0.1, 0.1)', - bcolor: 'rgb(0.1, ,0.1)', - ccolor: 'rgb(0.1, 0.1, 0.1', - dcolor: 'rgb(0.1, 0.1, 0.1);' - }; - var expectedContainer = {}; - Object.keys(container).forEach(function(k) { expectedContainer[k] = container[k]; }); - - Color.clean(container); - expect(container).toEqual(expectedContainer); - }); - - it('should not barf on nulls', function() { - var container1 = null; - var expectedContainer1 = null; - - Color.clean(container1); - expect(container1).toEqual(expectedContainer1); - - var container2 = { - anull: null, - anundefined: undefined, - color: null, - anarray: [null, {color: 'rgb(0.1, 0.1, 0.1)'}] - }; - var expectedContainer2 = { - anull: null, - anundefined: undefined, - color: null, - anarray: [null, {color: 'rgb(0.1, 0.1, 0.1)'}] - }; - - Color.clean(container2); - expect(container2).toEqual(expectedContainer2); - }); - }); - describe('fill', function() { it('should call style with both fill and fill-opacity', function() { var mockElement = { @@ -155,7 +13,7 @@ describe('Test color:', function() { } }; - Color.fill(mockElement, 'rgba(255,255,0,0.5'); + Color.fill(mockElement, 'rgba(255,255,0,0.5)'); }); }); @@ -168,7 +26,30 @@ describe('Test color:', function() { } }; - Color.stroke(mockElement, 'rgba(255,255,0,0.5'); + Color.stroke(mockElement, 'rgba(255,255,0,0.5)'); + }); + }); + + describe('adjustLightness', () => { + it('lightens with a positive delta (additive in HSL L percentage points)', () => { + // black (L=0) + 50 → mid gray (L=50) + expect(Color.adjustLightness('#000', 50).hex()).toBe('#808080'); + }); + + it('darkens with a negative delta', () => { + // white (L=100) - 50 → mid gray (L=50) + expect(Color.adjustLightness('#fff', -50).hex()).toBe('#808080'); + }); + + it('shifts HSL lightness additively, not multiplicatively', () => { + // additive: L 50.2 + 20 = 70.2 → #B3B3B3 + // multiplicative would give L 50.2 * 1.2 = 60.2 → #9A9A9A + expect(Color.adjustLightness('#808080', 20).hex()).toBe('#B3B3B3'); + }); + + it('preserves hue and saturation on chromatic colors', () => { + // red (H=0, S=100, L=50) + 20 → HSL(0, 100, 70) → #FF6666 + expect(Color.adjustLightness('#ff0000', 20).hex()).toBe('#FF6666'); }); }); @@ -176,19 +57,19 @@ describe('Test color:', function() { it('should darken light colors', function() { var out = Color.contrast('#eee', 10, 20); - expect(out).toEqual('#bbbbbb'); + expect(out).toEqual('rgb(187, 187, 187)'); }); it('should darken light colors (2)', function() { var out = Color.contrast('#fdae61', 10, 20); - expect(out).toEqual('#f57a03'); + expect(out).toEqual('rgb(245, 123, 3)'); }); it('should lighten dark colors', function() { var out = Color.contrast('#2b83ba', 10, 20); - expect(out).toEqual('#449dd4'); + expect(out).toEqual('rgb(68, 157, 212)'); }); }); }); diff --git a/test/jasmine/tests/colorscale_test.js b/test/jasmine/tests/colorscale_test.js index f8b0fe91348..0ce9fbb6ad0 100644 --- a/test/jasmine/tests/colorscale_test.js +++ b/test/jasmine/tests/colorscale_test.js @@ -1045,8 +1045,8 @@ describe('Test colorscale restyle calls:', function() { .then(function() { _assert(msg + ' back to original marker.symbol', exp); }); } - var rdbu = ['rgb(5, 10, 172)', 'rgb(53, 70, 208)', 'rgb(227, 153, 104)', - 'rgb(53, 70, 208)', 'rgb(53, 70, 208)', 'rgb(178, 10, 28)']; + var rdbu = ['rgb(5, 10, 172)', 'rgb(53, 71, 208)', 'rgb(227, 153, 104)', + 'rgb(53, 71, 208)', 'rgb(53, 71, 208)', 'rgb(178, 10, 28)']; var grns = ['rgb(0, 68, 27)', 'rgb(12, 119, 52)', 'rgb(174, 222, 167)', 'rgb(12, 119, 52)', 'rgb(12, 119, 52)', 'rgb(247, 252, 245)']; diff --git a/test/jasmine/tests/config_test.js b/test/jasmine/tests/config_test.js index 41514e68bb1..a8ebad5f6ae 100644 --- a/test/jasmine/tests/config_test.js +++ b/test/jasmine/tests/config_test.js @@ -220,41 +220,6 @@ describe('config argument', function() { }); }); - describe('showLink attribute', function() { - var gd; - - beforeEach(function() { - gd = createGraphDiv(); - }); - - afterEach(destroyGraphDiv); - - it('should not display the edit link by default', function(done) { - Plotly.newPlot(gd, [], {}) - .then(function() { - var link = document.getElementsByClassName('js-plot-link-container')[0]; - - expect(link).toBeUndefined(); - }) - .then(done, done.fail); - }); - - it('should display a link when true', function(done) { - Plotly.newPlot(gd, [], {}, { showLink: true }) - .then(function() { - var link = document.getElementsByClassName('js-plot-link-container')[0]; - - expect(link.textContent).toBe('Edit chart »'); - - var bBox = link.getBoundingClientRect(); - expect(bBox.width).toBeGreaterThan(0); - expect(bBox.height).toBeGreaterThan(0); - }) - .then(done, done.fail); - }); - }); - - describe('editable attribute', function() { var gd; diff --git a/test/jasmine/tests/download_test.js b/test/jasmine/tests/download_test.js index 02466695809..dce3f6e784c 100644 --- a/test/jasmine/tests/download_test.js +++ b/test/jasmine/tests/download_test.js @@ -86,6 +86,96 @@ describe('Plotly.downloadImage', function() { }) .then(done, done.fail); }, LONG_TIMEOUT_INTERVAL); + + describe('default filename (derived from the plot title)', function() { + // download with no explicit `filename`, so the name is derived from the title + function downloadDefault(layout) { + return Plotly.newPlot(gd, [{y: [1, 2, 1]}], layout).then(function() { + return Plotly.downloadImage(gd, {format: 'png', height: 300, width: 300}); + }); + } + + it('slugifies the plot title into the filename', function(done) { + downloadDefault({title: {text: 'My Awesome Plot'}}) + .then(function(filename) { + expect(filename).toBe('my-awesome-plot.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + + it('uses a title supplied via layout.template', function(done) { + // the template title only appears in _fullLayout, not the input layout + downloadDefault({template: {layout: {title: {text: 'Title From Template'}}}}) + .then(function(filename) { + expect(filename).toBe('title-from-template.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + + it('strips forbidden characters from the title', function(done) { + downloadDefault({title: {text: 'Revenue, Costs & "Profit" (2024)'}}) + .then(function(filename) { + expect(filename).toBe('revenue-costs-profit-2024.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + + it('caps the title-derived name at 40 code points', function(done) { + downloadDefault({title: {text: 'A Very Long Plot Title That Exceeds The Forty Character Maximum Limit'}}) + .then(function(filename) { + expect(filename).toBe('a-very-long-plot-title-that-exceeds-the.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + + it('falls back to subtitle when title contains MathJax', function(done) { + downloadDefault({ + title: { + text: '$Ax^2 + bx + c$', + subtitle: {text: 'Quadratic Equation'} + }, + }) + .then(function(filename) { + expect(filename).toBe('quadratic-equation.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + + it('falls back to plot-image as filename when title contains MathJax and there is no subtitle', function(done) { + downloadDefault({title: {text: '$Ax^2 + bx + c$'}}) + .then(function(filename) { + expect(filename).toBe('plot-image.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + + it('falls back to plot-image as filename when there is no title or subtitle', function(done) { + downloadDefault({}) + .then(function(filename) { + expect(filename).toBe('plot-image.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + + it('does not use the editable-mode placeholder as the filename', function(done) { + // _fullLayout.title.text defaults to the "Click to enter Plot title" + // placeholder; the filename must come from the input layout instead + downloadDefault({}) + .then(function(filename) { + expect(gd._fullLayout.title.text).toBe('Click to enter Plot title'); + expect(filename).toBe('plot-image.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + + it('ignores title if it contains LaTeX markup', function(done) { + downloadDefault({title: {text: '$\\alpha$ + $\\beta$'}}) + .then(function(filename) { + expect(filename).toBe('plot-image.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + }); }); function downloadTest(gd, format) { diff --git a/test/jasmine/tests/finance_test.js b/test/jasmine/tests/finance_test.js index ac158cf4c96..302a88e70a9 100644 --- a/test/jasmine/tests/finance_test.js +++ b/test/jasmine/tests/finance_test.js @@ -74,8 +74,8 @@ describe('finance charts defaults:', function () { assertDataLength(trace0, out._fullData[0], 5); assertDataLength(trace1, out._fullData[1], 4); - expect(out._fullData[0]._fullInput.x).toBeUndefined(); - expect(out._fullData[1]._fullInput.x).toBeDefined(); + expect(out._fullData[0].x).toBeUndefined(); + expect(out._fullData[1].x).toBeDefined(); }); it('should set visible to *false* when a component (other than x) is missing', function () { diff --git a/test/jasmine/tests/geo_test.js b/test/jasmine/tests/geo_test.js index 403e30a55a2..d75451d1923 100644 --- a/test/jasmine/tests/geo_test.js +++ b/test/jasmine/tests/geo_test.js @@ -886,6 +886,18 @@ describe('geojson / topojson utils', function() { expect(out).toEqual(false); }); + + it('with *country names* locationmode and an ISO 3166-1 short-name suffix', () => { + const out = _locationToFeature(topojson, 'Korea, Republic of', 'country names'); + + expect(out.id).toEqual('KOR'); + }); + + it('with *country names* locationmode and a custom country code', () => { + const out = _locationToFeature(topojson, 'Aksai Chin', 'country names'); + + expect(out.id).toEqual('XAC'); + }); }); describe('should distinguish between US and US Virgin Island', function() { diff --git a/test/jasmine/tests/gl3dlayout_test.js b/test/jasmine/tests/gl3dlayout_test.js index ceb049d24f3..75d271f7b6c 100644 --- a/test/jasmine/tests/gl3dlayout_test.js +++ b/test/jasmine/tests/gl3dlayout_test.js @@ -1,7 +1,6 @@ var Plotly = require('../../../lib/index'); var Gl3d = require('../../../src/plots/gl3d'); -var tinycolor = require('tinycolor2'); var Color = require('../../../src/components/color'); var createGraphDiv = require('../assets/create_graph_div'); @@ -378,10 +377,10 @@ describe('Test Gl3d layout defaults', function() { supplyLayoutDefaults(layoutIn, layoutOut, fullData); expect(layoutOut.scene.xaxis.gridcolor) - .toEqual(tinycolor.mix('red', bgColor, frac).toRgbString()); + .toEqual(Color.mix('red', bgColor, frac)); expect(layoutOut.scene.yaxis.gridcolor).toEqual('blue'); expect(layoutOut.scene.zaxis.gridcolor) - .toEqual(tinycolor.mix('#444', bgColor, frac).toRgbString()); + .toEqual(Color.mix('#444', bgColor, frac)); }); it('should disable converting numeric strings using axis.autotypenumbers', function() { diff --git a/test/jasmine/tests/hover_label_test.js b/test/jasmine/tests/hover_label_test.js index b252872decf..216822d5680 100644 --- a/test/jasmine/tests/hover_label_test.js +++ b/test/jasmine/tests/hover_label_test.js @@ -949,10 +949,10 @@ describe('hover info', function() { fontColor: 'rgb(255, 255, 255)' }, { bgcolor: 'rgb(0, 200, 0)', - bordercolor: 'rgb(255, 255, 255)', + bordercolor: 'rgb(68, 68, 68)', fontSize: 13, fontFamily: 'Arial', - fontColor: 'rgb(255, 255, 255)' + fontColor: 'rgb(68, 68, 68)' }, { bgcolor: 'rgb(255, 127, 14)', bordercolor: 'rgb(68, 68, 68)', diff --git a/test/jasmine/tests/icicle_test.js b/test/jasmine/tests/icicle_test.js index 4f54f041dd9..e3e8cb9bbf4 100644 --- a/test/jasmine/tests/icicle_test.js +++ b/test/jasmine/tests/icicle_test.js @@ -403,15 +403,15 @@ describe('Test icicle calc:', function () { var cd = gd.calcdata[0]; expect(cd.length).toEqual(9); - expect(cd[0].color).toEqual('rgba(255, 192, 203, 1)'); - expect(cd[1].color).toEqual('rgba(119, 119, 119, 1)'); - expect(cd[2].color).toEqual('rgba(255, 0, 0, 1)'); - expect(cd[3].color).toEqual('rgba(255, 255, 0, 1)'); - expect(cd[4].color).toEqual('rgba(0, 255, 0, 1)'); - expect(cd[5].color).toEqual('rgba(0, 255, 255, 1)'); - expect(cd[6].color).toEqual('rgba(0, 0, 255, 1)'); - expect(cd[7].color).toEqual('rgba(255, 0, 255, 1)'); - expect(cd[8].color).toEqual('rgba(255, 255, 255, 1)'); + expect(cd[0].color).toEqual('rgb(255, 192, 203)'); + expect(cd[1].color).toEqual('rgb(119, 119, 119)'); + expect(cd[2].color).toEqual('rgb(255, 0, 0)'); + expect(cd[3].color).toEqual('rgb(255, 255, 0)'); + expect(cd[4].color).toEqual('rgb(0, 255, 0)'); + expect(cd[5].color).toEqual('rgb(0, 255, 255)'); + expect(cd[6].color).toEqual('rgb(0, 0, 255)'); + expect(cd[7].color).toEqual('rgb(255, 0, 255)'); + expect(cd[8].color).toEqual('rgb(255, 255, 255)'); }); it('should use *marker.colors* numbers with default colorscale', function () { diff --git a/test/jasmine/tests/legend_test.js b/test/jasmine/tests/legend_test.js index c5b252da9b1..97cd23f145a 100644 --- a/test/jasmine/tests/legend_test.js +++ b/test/jasmine/tests/legend_test.js @@ -3200,8 +3200,7 @@ describe('legend with custom legendwidth', function () { .then(done, done.fail); }); - // TODO: Update this test when releasing next major version which will remove the exception for shape traces - it('should apply marker.line.dash to scatter traces but use solid for shape traces', (done) => { + it('should apply marker.line.dash to scatter traces and shape traces', (done) => { const data = [ { type: 'scatter', @@ -3247,7 +3246,7 @@ describe('legend with custom legendwidth', function () { expect(legendItems.length).toBe(2); expect(legendItems[0].style.strokeDasharray).not.toBe(''); - expect(legendItems[1].style.strokeDasharray).toBe(''); + expect(legendItems[1].style.strokeDasharray).not.toBe(''); }) .then(done, done.fail); }); @@ -3498,4 +3497,4 @@ describe('legend title click', function() { } }).then(done, done.fail); }); -}); \ No newline at end of file +}); diff --git a/test/jasmine/tests/lib_test.js b/test/jasmine/tests/lib_test.js index fe1f6b71f0c..5069d35bb89 100644 --- a/test/jasmine/tests/lib_test.js +++ b/test/jasmine/tests/lib_test.js @@ -1941,6 +1941,61 @@ describe('Test lib.js:', function () { }); }); + describe('slugify', function () { + it('lowercases, trims, and hyphenates whitespace', function () { + expect(Lib.slugify(' Hello World ')).toBe('hello-world'); + expect(Lib.slugify('Multiple Spaces\tand\ntabs')).toBe('multiple-spaces-and-tabs'); + }); + + it('strips html/pseudo-html tags', function () { + expect(Lib.slugify('Revenue by year')).toBe('revenue-by-year'); + }); + + it('removes illegal filename characters', function () { + expect(Lib.slugify('a/b\\c:d*e?f"g|h$i%j&k!l@m#n~o.p^q`r\'s,t')) + .toBe('abcdefghijklmnopqrst'); + expect(Lib.slugify('a>b* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms.", + "description": "Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed.", "dflt": "=", "editType": "calc", "valType": "enumerated", @@ -30535,11 +28662,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dx": { "description": "Sets the x coordinate step. See `x0` for more info.", "dflt": 1, @@ -30582,11 +28704,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -30600,33 +28717,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -30634,11 +28736,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -30649,11 +28746,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -30669,11 +28761,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -30682,22 +28769,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -30709,11 +28786,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -30727,11 +28799,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -30747,11 +28814,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -30764,11 +28826,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -30779,11 +28836,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -30811,31 +28863,16 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "description": "Same as `text`.", "editType": "calc", "valType": "data_array" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -31002,11 +29039,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -31045,25 +29077,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets the text elements associated with each z value.", "editType": "calc", @@ -31160,11 +29173,6 @@ "valType": "integer" } }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "description": "For this trace it only has an effect if `coloring` is set to *heatmap*. Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`.", "dflt": "", @@ -31253,7 +29261,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -31286,11 +29294,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "xtype": { "description": "If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided).", "editType": "calc+clearAxisTypes", @@ -31348,7 +29351,7 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -31381,11 +29384,6 @@ "end" ] }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "ytype": { "description": "If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided)", "editType": "calc+clearAxisTypes", @@ -31408,7 +29406,7 @@ "valType": "boolean" }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -31443,11 +29441,6 @@ "dflt": 0, "editType": "plot", "valType": "integer" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -31482,11 +29475,6 @@ }, "valType": "any" }, - "asrc": { - "description": "Sets the source reference on Chart Studio Cloud for `a`.", - "editType": "none", - "valType": "string" - }, "atype": { "description": "If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided).", "editType": "calc+clearAxisTypes", @@ -31527,11 +29515,6 @@ }, "valType": "any" }, - "bsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `b`.", - "editType": "none", - "valType": "string" - }, "btype": { "description": "If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided)", "editType": "calc+clearAxisTypes", @@ -31965,21 +29948,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -32080,7 +30053,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -32161,7 +30134,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -32291,7 +30264,7 @@ "valType": "string" }, "operation": { - "description": "Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms.", + "description": "Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed.", "dflt": "=", "editType": "calc", "valType": "enumerated", @@ -32365,11 +30338,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "da": { "description": "Sets the x coordinate step. See `x0` for more info.", "dflt": 1, @@ -32398,21 +30366,11 @@ "editType": "calc", "valType": "data_array" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -32579,11 +30537,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -32622,35 +30575,11 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets the text elements associated with each z value.", "editType": "calc", "valType": "data_array" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "transpose": { "description": "Transposes the z data.", "dflt": false, @@ -32733,11 +30662,6 @@ "dflt": 0, "editType": "plot", "valType": "integer" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -33192,21 +31116,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -33307,7 +31221,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -33388,7 +31302,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -33401,11 +31315,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "hoverinfo": { "arrayOk": true, "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", @@ -33425,11 +31334,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -33443,33 +31347,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -33477,11 +31366,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -33492,11 +31376,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -33512,11 +31391,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -33525,22 +31399,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -33552,11 +31416,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -33570,11 +31429,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -33590,11 +31444,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -33607,11 +31456,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -33622,11 +31466,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -33648,11 +31487,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -33660,31 +31494,16 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "lat": { "description": "Sets the latitude coordinates (in degrees North).", "editType": "calc", "valType": "data_array" }, - "latsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lat`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -33813,22 +31632,12 @@ "editType": "calc", "valType": "data_array" }, - "lonsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lon`.", - "editType": "none", - "valType": "string" - }, "meta": { "arrayOk": true, "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -33850,11 +31659,6 @@ "min": 1, "valType": "number" }, - "radiussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `radius`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color.", "dflt": false, @@ -33873,25 +31677,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.", "dflt": "map", @@ -33905,11 +31690,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "densitymap", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -33968,11 +31748,6 @@ "zauto": false }, "valType": "number" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -34420,21 +32195,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -34535,7 +32300,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -34616,7 +32381,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -34629,11 +32394,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "hoverinfo": { "arrayOk": true, "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", @@ -34653,11 +32413,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -34671,33 +32426,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -34705,11 +32445,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -34720,11 +32455,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -34740,11 +32470,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -34753,22 +32478,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -34780,11 +32495,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -34798,11 +32508,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -34818,11 +32523,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -34835,11 +32535,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -34850,11 +32545,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -34876,11 +32566,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -34888,31 +32573,16 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "lat": { "description": "Sets the latitude coordinates (in degrees North).", "editType": "calc", "valType": "data_array" }, - "latsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lat`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -35041,22 +32711,12 @@ "editType": "calc", "valType": "data_array" }, - "lonsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lon`.", - "editType": "none", - "valType": "string" - }, "meta": { "arrayOk": true, "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -35078,11 +32738,6 @@ "min": 1, "valType": "number" }, - "radiussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `radius`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color.", "dflt": false, @@ -35101,25 +32756,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.", "dflt": "mapbox", @@ -35133,11 +32769,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "densitymapbox", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -35196,11 +32827,6 @@ "zauto": false }, "valType": "number" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -35292,11 +32918,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dx": { "description": "Sets the x coordinate step. See `x0` for more info.", "dflt": 1, @@ -35330,11 +32951,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -35348,33 +32964,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -35382,11 +32983,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -35397,11 +32993,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -35417,11 +33008,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -35430,22 +33016,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -35457,11 +33033,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -35475,11 +33046,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -35495,11 +33061,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -35512,11 +33073,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -35527,11 +33083,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -35553,11 +33104,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -35565,21 +33111,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "insidetextanchor": { "description": "Determines if texts are kept at center or start/end points in `textposition` *inside* mode.", "dflt": "middle", @@ -35597,11 +33133,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `text` lying inside the bar.", "editType": "calc", "family": { @@ -35612,11 +33143,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -35632,11 +33158,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -35645,22 +33166,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -35672,11 +33183,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -35690,11 +33196,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -35710,11 +33211,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -35727,11 +33223,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "legend": { @@ -36322,21 +33813,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -36437,7 +33918,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -36518,7 +33999,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -36526,11 +34007,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "autocolorscale": { @@ -36586,7 +34062,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -36594,11 +34070,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -36614,11 +34085,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -36630,11 +34096,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -36655,11 +34116,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -36701,11 +34157,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `text` lying outside the bar.", "editType": "calc", "family": { @@ -36716,11 +34167,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -36736,11 +34182,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -36749,22 +34190,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -36776,11 +34207,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -36794,11 +34220,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -36814,11 +34235,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -36831,11 +34247,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "selectedpoints": { @@ -36849,25 +34260,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -36887,11 +34279,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `text`.", "editType": "calc", "family": { @@ -36902,11 +34289,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -36922,11 +34304,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -36935,22 +34312,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -36962,11 +34329,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -36980,11 +34342,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -37000,11 +34357,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -37017,11 +34369,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textinfo": { @@ -37054,16 +34401,6 @@ "none" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `percentInitial`, `percentPrevious`, `percentTotal`, `label` and `value`.", @@ -37077,11 +34414,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "funnel", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -37130,7 +34462,7 @@ "valType": "subplotid" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -37157,11 +34489,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y coordinates.", "editType": "calc+clearAxisTypes", @@ -37180,7 +34507,7 @@ "valType": "subplotid" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -37207,11 +34534,6 @@ "end" ] }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "zorder": { "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.", "dflt": 0, @@ -37283,11 +34605,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dlabel": { "description": "Sets the label step. See `label0` for more info.", "dflt": 1, @@ -37296,7 +34613,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this funnelarea trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this funnelarea trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -37305,7 +34622,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this funnelarea trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this funnelarea trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -37377,11 +34694,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -37395,33 +34707,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -37429,11 +34726,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -37444,11 +34736,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -37464,11 +34751,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -37477,22 +34759,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -37504,11 +34776,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -37522,11 +34789,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -37542,11 +34804,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -37559,11 +34816,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -37574,11 +34826,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -37600,11 +34847,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -37612,32 +34854,17 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "insidetextfont": { "color": { "arrayOk": true, "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying inside the sector.", "editType": "plot", "family": { @@ -37648,11 +34875,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -37668,11 +34890,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -37681,22 +34898,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -37708,11 +34915,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -37726,11 +34928,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -37746,11 +34943,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -37763,11 +34955,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "label0": { @@ -37781,11 +34968,6 @@ "editType": "calc", "valType": "data_array" }, - "labelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `labels`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -37915,11 +35097,6 @@ "editType": "calc", "valType": "data_array" }, - "colorssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `colors`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "color": { @@ -37929,11 +35106,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -37943,11 +35115,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "pattern": { @@ -37957,11 +35124,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -37970,11 +35132,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -37998,11 +35155,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -38021,11 +35173,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -38034,11 +35181,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -38047,11 +35189,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "role": "object" @@ -38062,11 +35199,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -38092,25 +35224,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", "editType": "plot", @@ -38122,11 +35235,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo`.", "editType": "plot", "family": { @@ -38137,11 +35245,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -38157,11 +35260,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -38170,22 +35268,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -38197,11 +35285,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -38215,11 +35298,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -38235,11 +35313,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -38252,11 +35325,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textinfo": { @@ -38284,16 +35352,6 @@ "none" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `text` and `percent`.", @@ -38307,11 +35365,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "title": { "editType": "plot", "font": { @@ -38320,11 +35373,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `title`.", "editType": "plot", "family": { @@ -38335,11 +35383,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -38355,11 +35398,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -38368,22 +35406,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -38395,11 +35423,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -38413,11 +35436,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -38433,11 +35451,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -38450,11 +35463,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "position": { @@ -38492,11 +35500,6 @@ "editType": "calc", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -38530,11 +35533,6 @@ "description": "hiddenlabels is the funnelarea & pie chart analog of visible:'legendonly' but it can contain many labels, and can simultaneously hide slices from several pies/funnelarea charts", "editType": "calc", "valType": "data_array" - }, - "hiddenlabelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hiddenlabels`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -38971,21 +35969,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -39086,7 +36074,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -39167,7 +36155,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -39185,11 +36173,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dx": { "description": "Sets the x coordinate step. See `x0` for more info.", "dflt": 1, @@ -39227,11 +36210,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -39245,33 +36223,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -39279,11 +36242,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -39294,11 +36252,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -39314,11 +36267,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -39327,22 +36275,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -39354,11 +36292,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -39372,11 +36305,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -39392,11 +36320,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -39409,11 +36332,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -39424,11 +36342,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -39456,31 +36369,16 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "description": "Same as `text`.", "editType": "calc", "valType": "data_array" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -39610,11 +36508,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -39646,25 +36539,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets the text elements associated with each z value.", "editType": "calc", @@ -39761,11 +36635,6 @@ "valType": "integer" } }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`.", "dflt": "", @@ -39861,7 +36730,7 @@ "valType": "number" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -39897,11 +36766,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "xtype": { "description": "If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided).", "editType": "calc+clearAxisTypes", @@ -39966,7 +36830,7 @@ "valType": "number" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -40002,11 +36866,6 @@ "end" ] }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "ytype": { "description": "If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided)", "editType": "calc+clearAxisTypes", @@ -40029,7 +36888,7 @@ "valType": "boolean" }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -40075,11 +36934,6 @@ "best", false ] - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -40174,11 +37028,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "error_x": { "array": { "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.", @@ -40190,16 +37039,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "style", @@ -40283,16 +37122,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "style", @@ -40406,11 +37235,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -40424,33 +37248,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -40458,11 +37267,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -40473,11 +37277,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -40493,11 +37292,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -40506,22 +37300,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -40533,11 +37317,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -40551,11 +37330,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -40571,11 +37345,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -40588,11 +37357,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -40603,11 +37367,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -40629,11 +37388,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -40641,21 +37395,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "insidetextanchor": { "description": "Determines if texts are kept at center or start/end points in `textposition` *inside* mode.", "dflt": "end", @@ -41344,21 +38088,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -41459,7 +38193,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -41540,7 +38274,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -41548,11 +38282,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "cornerradius": { "description": "Sets the rounding of corners. May be an integer number of pixels, or a percentage of bar width (as a string ending in %). Defaults to `layout.barcornerradius`. In stack or relative barmode, the first trace to set cornerradius is used for the whole stack.", "editType": "calc", @@ -41613,7 +38342,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -41621,11 +38350,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -41641,11 +38365,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -41657,11 +38376,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "pattern": { "bgcolor": { "arrayOk": true, @@ -41669,11 +38383,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -41682,11 +38391,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -41710,11 +38414,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -41733,11 +38432,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -41746,11 +38440,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -41759,11 +38448,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "reversescale": { @@ -41786,11 +38470,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -41962,25 +38641,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets hover text elements associated with each bar. If a single string, the same string appears over all bars. If an array of string, the items are mapped in order to the this trace's coordinates.", @@ -42096,11 +38756,6 @@ "none" ] }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label` and `value`.", "dflt": "", @@ -42184,7 +38839,7 @@ }, "role": "object", "size": { - "description": "Sets the size of each x axis bin. Default behavior: If `nbinsx` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsx` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided,the sample data from all traces is combined to determine `size` as described above.", + "description": "Sets the size of each x axis bin. Default behavior: If `nbinsx` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsx` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided, the sample data from all traces is combined to determine `size` as described above.", "editType": "calc", "valType": "any" }, @@ -42219,16 +38874,11 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the sample data to be binned on the y axis.", "editType": "calc+clearAxisTypes", @@ -42249,7 +38899,7 @@ }, "role": "object", "size": { - "description": "Sets the size of each y axis bin. Default behavior: If `nbinsy` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsy` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided,the sample data from all traces is combined to determine `size` as described above.", + "description": "Sets the size of each y axis bin. Default behavior: If `nbinsy` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsy` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided, the sample data from all traces is combined to determine `size` as described above.", "editType": "calc", "valType": "any" }, @@ -42284,16 +38934,11 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "zorder": { "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.", "dflt": 0, @@ -42808,21 +39453,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -42923,7 +39558,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -43004,7 +39639,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -43017,11 +39652,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "histfunc": { "description": "Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively.", "dflt": "count", @@ -43067,11 +39697,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -43085,33 +39710,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -43119,11 +39729,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -43134,11 +39739,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -43154,11 +39754,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -43167,22 +39762,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -43194,11 +39779,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -43212,11 +39792,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -43232,11 +39807,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -43249,11 +39819,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -43264,11 +39829,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -43290,21 +39850,11 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -43434,11 +39984,6 @@ "editType": "calc", "valType": "data_array" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object" }, @@ -43448,11 +39993,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -43498,25 +40038,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "textfont": { "color": { "dflt": "auto", @@ -43710,16 +40231,11 @@ "valType": "number" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the sample data to be binned on the y axis.", "editType": "calc+clearAxisTypes", @@ -43788,16 +40304,11 @@ "valType": "number" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the aggregation data.", "editType": "calc", @@ -43811,7 +40322,7 @@ "valType": "boolean" }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -43851,11 +40362,6 @@ "best", false ] - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -44325,21 +40831,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -44440,7 +40936,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -44521,7 +41017,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -44652,7 +41148,7 @@ "valType": "string" }, "operation": { - "description": "Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms.", + "description": "Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed.", "dflt": "=", "editType": "calc", "valType": "enumerated", @@ -44726,11 +41222,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "histfunc": { "description": "Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively.", "dflt": "count", @@ -44776,11 +41267,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -44794,33 +41280,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -44828,11 +41299,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -44843,11 +41309,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -44863,11 +41324,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -44876,22 +41332,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -44903,11 +41349,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -44921,11 +41362,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -44941,11 +41377,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -44958,11 +41389,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -44973,11 +41399,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -44999,21 +41420,11 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -45181,11 +41592,6 @@ "editType": "calc", "valType": "data_array" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object" }, @@ -45195,11 +41601,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -45252,25 +41653,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "textfont": { "color": { "dflt": "auto", @@ -45457,16 +41839,11 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the sample data to be binned on the y axis.", "editType": "calc+clearAxisTypes", @@ -45528,16 +41905,11 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the aggregation data.", "editType": "calc", @@ -45551,7 +41923,7 @@ "valType": "boolean" }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -45580,11 +41952,6 @@ "zauto": false }, "valType": "number" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -45629,14 +41996,9 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this icicle trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this icicle trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -45645,7 +42007,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this icicle trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this icicle trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -45720,11 +42082,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -45738,33 +42095,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -45772,11 +42114,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -45787,11 +42124,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -45807,11 +42139,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -45820,22 +42147,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -45847,11 +42164,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -45865,11 +42177,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -45885,11 +42192,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -45902,11 +42204,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -45917,11 +42214,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -45943,11 +42235,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -45955,33 +42242,18 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "anim": true, "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "insidetextfont": { "color": { "arrayOk": true, "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying inside the sector.", "editType": "plot", "family": { @@ -45992,11 +42264,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -46012,11 +42279,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -46025,22 +42287,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -46052,11 +42304,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -46070,11 +42317,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -46090,11 +42332,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -46107,11 +42344,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "labels": { @@ -46119,11 +42351,6 @@ "editType": "calc", "valType": "data_array" }, - "labelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `labels`.", - "editType": "none", - "valType": "string" - }, "leaf": { "editType": "plot", "opacity": { @@ -46717,21 +42944,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -46832,7 +43049,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -46918,7 +43135,7 @@ "valType": "data_array" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -46926,11 +43143,6 @@ }, "valType": "colorscale" }, - "colorssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `colors`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "color": { @@ -46940,11 +43152,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -46954,11 +43161,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "pattern": { @@ -46968,11 +43170,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -46981,11 +43178,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -47009,11 +43201,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -47032,11 +43219,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -47045,11 +43227,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -47058,11 +43235,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "reversescale": { @@ -47091,11 +43263,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -47115,11 +43282,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented on top left corner of a treemap graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used.", "editType": "plot", "family": { @@ -47130,11 +43292,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -47150,11 +43307,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -47163,22 +43315,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -47190,11 +43332,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -47208,11 +43345,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -47228,11 +43360,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -47245,11 +43372,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "parents": { @@ -47257,11 +43379,6 @@ "editType": "calc", "valType": "data_array" }, - "parentssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `parents`.", - "editType": "none", - "valType": "string" - }, "pathbar": { "edgeshape": { "description": "Determines which shape is used for edges between `barpath` labels.", @@ -47279,7 +43396,7 @@ "editType": "calc", "role": "object", "side": { - "description": "Determines on which side of the the treemap the `pathbar` should be presented.", + "description": "Determines on which side of the treemap the `pathbar` should be presented.", "dflt": "top", "editType": "plot", "valType": "enumerated", @@ -47294,11 +43411,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used inside `pathbar`.", "editType": "plot", "family": { @@ -47309,11 +43421,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -47329,11 +43436,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -47342,22 +43444,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -47369,11 +43461,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -47387,11 +43474,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -47407,11 +43489,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -47424,11 +43501,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "thickness": { @@ -47460,25 +43532,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", "editType": "plot", @@ -47490,11 +43543,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo`.", "editType": "plot", "family": { @@ -47505,11 +43553,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -47525,11 +43568,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -47538,22 +43576,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -47565,11 +43593,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -47583,11 +43606,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -47603,11 +43621,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -47620,11 +43633,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textinfo": { @@ -47661,11 +43669,6 @@ "bottom right" ] }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`.", @@ -47679,11 +43682,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "tiling": { "editType": "calc", "flip": { @@ -47732,11 +43730,6 @@ "editType": "calc", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -47788,11 +43781,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dx": { "description": "Set the pixel's horizontal size.", "dflt": 1, @@ -47825,11 +43813,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -47843,33 +43826,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -47877,11 +43845,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -47892,11 +43855,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -47912,11 +43870,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -47925,22 +43878,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -47952,11 +43895,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -47970,11 +43908,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -47990,11 +43923,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -48007,11 +43935,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -48022,11 +43945,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -48048,31 +43966,16 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "description": "Same as `text`.", "editType": "plot", "valType": "data_array" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -48196,11 +44099,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -48219,35 +44117,11 @@ "editType": "calc", "valType": "string" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets the text elements associated with each z value.", "editType": "plot", "valType": "data_array" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "image", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -48360,11 +44234,6 @@ "fast", false ] - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -48396,11 +44265,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "delta": { "decreasing": { "color": { @@ -48568,7 +44432,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this indicator trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this indicator trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -48577,7 +44441,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this indicator trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this indicator trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -48954,21 +44818,11 @@ "editType": "plot", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "plot", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -49156,11 +45010,6 @@ "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -49284,11 +45133,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines how the value is displayed on the graph. `number` displays the value numerically in text. `delta` displays the difference to a reference value in text. Finally, `gauge` displays the value graphically on an axis.", "dflt": "number", @@ -49416,25 +45260,6 @@ "valType": "string" } }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "title": { "align": { "description": "Sets the horizontal alignment of the title. It defaults to `center` except for bullet charts for which it defaults to right.", @@ -50102,21 +45927,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -50217,7 +46032,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -50298,7 +46113,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -50335,11 +46150,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "flatshading": { "description": "Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections.", "dflt": true, @@ -50365,11 +46175,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -50383,33 +46188,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -50417,11 +46207,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -50432,11 +46217,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -50452,11 +46232,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -50465,22 +46240,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -50492,11 +46257,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -50510,11 +46270,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -50530,11 +46285,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -50547,11 +46297,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -50562,11 +46307,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -50588,11 +46328,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -50600,21 +46335,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "isomax": { "description": "Sets the maximum boundary for iso-surface plot.", "editType": "calc", @@ -50842,11 +46567,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -50903,11 +46623,6 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "role": "object", "show": { "description": "Determines whether or not slice planes about the x dimension are drawn.", @@ -50932,11 +46647,6 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "role": "object", "show": { "description": "Determines whether or not slice planes about the y dimension are drawn.", @@ -50961,11 +46671,6 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "role": "object", "show": { "description": "Determines whether or not slice planes about the z dimension are drawn.", @@ -50993,25 +46698,6 @@ "valType": "boolean" } }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "surface": { "count": { "description": "Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn.", @@ -51062,11 +46748,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "isosurface", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -51084,16 +46765,11 @@ "valType": "data_array" }, "valuehoverformat": { - "description": "Sets the hover text formatting rulefor `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "calc", "valType": "string" }, - "valuesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `value`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -51111,47 +46787,32 @@ "valType": "data_array" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the Y coordinates of the vertices on Y axis.", "editType": "calc+clearAxisTypes", "valType": "data_array" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the Z coordinates of the vertices on Z axis.", "editType": "calc+clearAxisTypes", "valType": "data_array" }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -51635,21 +47296,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -51750,7 +47401,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -51831,7 +47482,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -51868,11 +47519,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "delaunayaxis": { "description": "Sets the Delaunay axis, which is the axis that is perpendicular to the surface of the Delaunay triangulation. It has an effect if `i`, `j`, `k` are not provided and `alphahull` is set to indicate Delaunay triangulation.", "dflt": "z", @@ -51889,11 +47535,6 @@ "editType": "calc", "valType": "data_array" }, - "facecolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `facecolor`.", - "editType": "none", - "valType": "string" - }, "flatshading": { "description": "Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections.", "dflt": false, @@ -51919,11 +47560,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -51937,33 +47573,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -51971,11 +47592,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -51986,11 +47602,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -52006,11 +47617,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -52019,22 +47625,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -52046,11 +47642,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -52064,11 +47655,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -52084,11 +47670,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -52101,11 +47682,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -52116,11 +47692,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -52142,11 +47713,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -52154,11 +47720,6 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "i": { "description": "A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *first* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `i[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `i` represents a point in space, which is the first vertex of a triangle.", "editType": "calc", @@ -52169,11 +47730,6 @@ "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "intensity": { "description": "Sets the intensity values for vertices or cells as defined by `intensitymode`. It can be used for plotting fields on meshes.", "editType": "calc", @@ -52189,36 +47745,16 @@ "cell" ] }, - "intensitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `intensity`.", - "editType": "none", - "valType": "string" - }, - "isrc": { - "description": "Sets the source reference on Chart Studio Cloud for `i`.", - "editType": "none", - "valType": "string" - }, "j": { - "description": "A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `j[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `j` represents a point in space, which is the second vertex of a triangle.", + "description": "A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `j[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `j` represents a point in space, which is the second vertex of a triangle.", "editType": "calc", "valType": "data_array" }, - "jsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `j`.", - "editType": "none", - "valType": "string" - }, "k": { - "description": "A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *third* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `k` represents a point in space, which is the third vertex of a triangle.", + "description": "A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *third* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `k` represents a point in space, which is the third vertex of a triangle.", "editType": "calc", "valType": "data_array" }, - "ksrc": { - "description": "Sets the source reference on Chart Studio Cloud for `k`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -52436,11 +47972,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -52478,25 +48009,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -52504,11 +48016,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "mesh3d", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -52525,11 +48032,6 @@ "editType": "calc", "valType": "data_array" }, - "vertexcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `vertexcolor`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -52571,16 +48073,11 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the Y coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex.", "editType": "calc+clearAxisTypes", @@ -52611,16 +48108,11 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the Z coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex.", "editType": "calc+clearAxisTypes", @@ -52651,15 +48143,10 @@ ] }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -52679,21 +48166,11 @@ "editType": "calc", "valType": "data_array" }, - "closesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `close`.", - "editType": "none", - "valType": "string" - }, "customdata": { "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "decreasing": { "editType": "style", "line": { @@ -52734,11 +48211,6 @@ "editType": "calc", "valType": "data_array" }, - "highsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `high`.", - "editType": "none", - "valType": "string" - }, "hoverinfo": { "arrayOk": true, "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", @@ -52758,11 +48230,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -52776,33 +48243,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -52810,11 +48262,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -52825,11 +48272,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -52845,11 +48287,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -52858,22 +48295,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -52885,11 +48312,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -52903,11 +48325,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -52923,11 +48340,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -52940,11 +48352,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -52955,11 +48362,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -52987,11 +48389,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -52999,21 +48396,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "increasing": { "editType": "style", "line": { @@ -53190,7 +48577,7 @@ "editType": "style", "role": "object", "width": { - "description": "[object Object] Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`.", + "description": "Sets the line width (in px). Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`.", "dflt": 2, "editType": "style", "min": 0, @@ -53202,22 +48589,12 @@ "editType": "calc", "valType": "data_array" }, - "lowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `low`.", - "editType": "none", - "valType": "string" - }, "meta": { "arrayOk": true, "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -53236,11 +48613,6 @@ "editType": "calc", "valType": "data_array" }, - "opensrc": { - "description": "Sets the source reference on Chart Studio Cloud for `open`.", - "editType": "none", - "valType": "string" - }, "selectedpoints": { "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", "editType": "calc", @@ -53252,25 +48624,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets hover text elements associated with each sample point. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to this trace's sample points.", @@ -53278,11 +48631,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the width of the open/close tick marks relative to the *x* minimal interval.", "dflt": 0.3, @@ -53349,7 +48697,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -53376,11 +48724,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "yaxis": { "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", "dflt": "y", @@ -53388,7 +48731,7 @@ "valType": "subplotid" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -53406,7 +48749,7 @@ "showLegend" ], "meta": { - "description": "The ohlc (short for Open-High-Low-Close) is a style of financial chart describing open, high, low and close for a given `x` coordinate (most likely time). The tip of the lines represent the `low` and `high` values and the horizontal segments represent the `open` and `close` values. Sample points where the close value is higher (lower) then the open value are called increasing (decreasing). By default, increasing items are drawn in green whereas decreasing are drawn in red." + "description": "The ohlc (short for Open-High-Low-Close) is a style of financial chart describing open, high, low and close for a given `x` coordinate (most likely time). The tip of the lines represent the `low` and `high` values and the horizontal segments represent the `open` and `close` values. Sample points where the close value is higher (lower) than the open value are called increasing (decreasing). By default, increasing items are drawn in green whereas decreasing are drawn in red." }, "type": "ohlc" }, @@ -53438,11 +48781,6 @@ "min": 0, "valType": "number" }, - "countssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `counts`.", - "editType": "none", - "valType": "string" - }, "dimensions": { "items": { "dimension": { @@ -53451,11 +48789,6 @@ "editType": "calc", "valType": "data_array" }, - "categoryarraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.", - "editType": "none", - "valType": "string" - }, "categoryorder": { "description": "Specifies the ordering logic for the categories in the dimension. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`.", "dflt": "trace", @@ -53486,22 +48819,12 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "values": { "description": "Dimension values. `values[n]` represents the category value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated).", "dflt": [], "editType": "calc", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Shows the dimension when set to `true` (the default). Hides the dimension for `false`.", "dflt": true, @@ -53514,7 +48837,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this parcats trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this parcats trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -53523,7 +48846,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this parcats trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this parcats trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -54274,21 +49597,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -54389,7 +49702,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -54470,7 +49783,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -54478,11 +49791,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "hovertemplate": { "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `count` and `probability`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", @@ -54526,11 +49834,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -54546,25 +49849,6 @@ "backward" ] }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "tickfont": { "color": { "editType": "calc", @@ -54693,11 +49977,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dimensions": { "items": { "dimension": { @@ -54768,31 +50047,16 @@ "editType": "plot", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear.", "editType": "plot", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "values": { "description": "Dimension values. `values[n]` represents the value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). Each value must be a finite number.", "editType": "calc", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Shows the dimension when set to `true` (the default). Hides the dimension for `false`.", "dflt": true, @@ -54805,7 +50069,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this parcoords trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this parcoords trace.", "dflt": 0, "editType": "plot", "min": 0, @@ -54814,7 +50078,7 @@ "editType": "plot", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this parcoords trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this parcoords trace.", "dflt": 0, "editType": "plot", "min": 0, @@ -54872,11 +50136,6 @@ "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "labelangle": { "description": "Sets the angle of the labels with respect to the horizontal. For example, a `tickangle` of -90 draws the labels vertically. Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*.", "dflt": 0, @@ -55564,21 +50823,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -55679,7 +50928,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -55760,7 +51009,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": [ [ 0, @@ -55837,11 +51086,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color.", @@ -55863,11 +51107,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -55962,25 +51201,6 @@ "valType": "integer" } }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "tickfont": { "color": { "editType": "plot", @@ -56140,11 +51360,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "direction": { "description": "Specifies the direction at which succeeding sectors follow one another.", "dflt": "counterclockwise", @@ -56163,7 +51378,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this pie trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this pie trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -56172,7 +51387,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this pie trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this pie trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -56252,11 +51467,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -56270,33 +51480,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -56304,11 +51499,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -56319,11 +51509,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -56339,11 +51524,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -56352,22 +51532,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -56379,11 +51549,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -56397,11 +51562,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -56417,11 +51577,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -56434,11 +51589,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -56449,11 +51599,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -56475,11 +51620,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -56487,32 +51627,17 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "insidetextfont": { "color": { "arrayOk": true, "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying inside the sector.", "editType": "plot", "family": { @@ -56523,11 +51648,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -56543,11 +51663,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -56556,22 +51671,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -56583,11 +51688,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -56601,11 +51701,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -56621,11 +51716,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -56638,11 +51728,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "insidetextorientation": { @@ -56668,11 +51753,6 @@ "editType": "calc", "valType": "data_array" }, - "labelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `labels`.", - "editType": "none", - "valType": "string" - }, "legend": { "arrayOk": true, "description": "Sets the reference to a legend to show the pie slices in. Can be an array if `values` is set. In that case, each entry specifies the legend reference for one slice. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", @@ -56792,16 +51872,6 @@ "editType": "style", "valType": "number" }, - "legendranksrc": { - "description": "Sets the source reference on Chart Studio Cloud for `legendrank`.", - "editType": "none", - "valType": "string" - }, - "legendsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `legend`.", - "editType": "none", - "valType": "string" - }, "legendwidth": { "description": "Sets the width (in px or fraction) of the legend for this trace.", "editType": "style", @@ -56814,11 +51884,6 @@ "editType": "calc", "valType": "data_array" }, - "colorssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `colors`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "color": { @@ -56828,11 +51893,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -56842,11 +51902,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "pattern": { @@ -56856,11 +51911,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -56869,11 +51919,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -56897,11 +51942,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -56920,11 +51960,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -56933,11 +51968,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -56946,11 +51976,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "role": "object" @@ -56961,11 +51986,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -56985,11 +52005,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying outside the sector.", "editType": "plot", "family": { @@ -57000,11 +52015,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -57020,11 +52030,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -57033,22 +52038,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -57060,11 +52055,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -57078,11 +52068,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -57098,11 +52083,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -57115,11 +52095,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "pull": { @@ -57131,11 +52106,6 @@ "min": 0, "valType": "number" }, - "pullsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `pull`.", - "editType": "none", - "valType": "string" - }, "rotation": { "description": "Instead of the first slice starting at 12 o'clock, rotate to some other angle.", "dflt": 0, @@ -57155,36 +52125,12 @@ "editType": "style", "valType": "boolean" }, - "showlegendsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `showlegend`.", - "editType": "none", - "valType": "string" - }, "sort": { "description": "Determines whether or not the sectors are reordered from largest to smallest.", "dflt": true, "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", "editType": "plot", @@ -57196,11 +52142,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo`.", "editType": "plot", "family": { @@ -57211,11 +52152,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -57231,11 +52167,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -57244,22 +52175,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -57271,11 +52192,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -57289,11 +52205,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -57309,11 +52220,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -57326,11 +52232,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textinfo": { @@ -57360,16 +52261,6 @@ "none" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`.", @@ -57383,11 +52274,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "title": { "editType": "plot", "font": { @@ -57396,11 +52282,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `title`.", "editType": "plot", "family": { @@ -57411,11 +52292,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -57431,11 +52307,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -57444,22 +52315,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -57471,11 +52332,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -57489,11 +52345,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -57509,11 +52360,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -57526,11 +52372,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "position": { @@ -57571,11 +52412,6 @@ "editType": "calc", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -57605,11 +52441,6 @@ "editType": "calc", "valType": "data_array" }, - "hiddenlabelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hiddenlabels`.", - "editType": "none", - "valType": "string" - }, "piecolorway": { "description": "Sets the default pie slice colors. Defaults to the main `colorway` used for trace colors. If you specify a new list here it can still be extended with lighter and darker colors, see `extendpiecolors`.", "editType": "calc", @@ -57621,19 +52452,18 @@ }, "type": "pie" }, - "sankey": { - "animatable": false, + "quiver": { + "animatable": true, "attributes": { - "arrangement": { - "description": "If value is `snap` (the default), the node arrangement is assisted by automatic snapping of elements to preserve space between nodes specified via `nodepad`. If value is `perpendicular`, the nodes can only move along a line perpendicular to the flow. If value is `freeform`, the nodes can freely move on the plane. If value is `fixed`, the nodes are stationary.", - "dflt": "snap", + "anchor": { + "description": "Sets the arrows' anchor with respect to their (x,y) positions. Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head, or *center* to center the arrow on (x,y).", + "dflt": "tail", "editType": "calc", "valType": "enumerated", "values": [ - "snap", - "perpendicular", - "freeform", - "fixed" + "tip", + "tail", + "center" ] }, "customdata": { @@ -57641,14 +52471,1394 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "dx": { + "anim": true, + "description": "Sets the x coordinate step. See `x0` for more info.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "dy": { + "anim": true, + "description": "Sets the y coordinate step. See `y0` for more info.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "hoverdistance": { + "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", + "dflt": 20, + "editType": "calc", + "min": -1, + "valType": "number" + }, + "hoverinfo": { + "arrayOk": true, + "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", + "dflt": "all", + "editType": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "x", + "y", + "u", + "v", + "text", + "name" + ], + "valType": "flaglist" + }, + "hoverlabel": { + "align": { + "arrayOk": true, + "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", + "dflt": "auto", + "editType": "none", + "valType": "enumerated", + "values": [ + "left", + "right", + "auto" + ] + }, + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "none", + "valType": "color" + }, + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "none", + "valType": "color" + }, + "editType": "none", + "font": { + "color": { + "arrayOk": true, + "editType": "none", + "valType": "color" + }, + "description": "Sets the font used in hover labels.", + "editType": "none", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "none", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "none", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "none", + "min": 1, + "valType": "number" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "none", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "namelength": { + "arrayOk": true, + "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", + "dflt": 15, + "editType": "none", + "min": -1, + "valType": "integer" + }, + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "hovertemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", + "dflt": "", "editType": "none", "valType": "string" }, + "ids": { + "anim": true, + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", + "editType": "calc", + "valType": "data_array" + }, + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" + }, + "legendgroup": { + "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "legendgrouptitle": { + "editType": "style", + "font": { + "color": { + "editType": "style", + "valType": "color" + }, + "description": "Sets this legend group's title font.", + "editType": "style", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "style", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "style", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "style", + "valType": "string" + }, + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } + }, + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" + }, + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "marker": { + "arrowsize": { + "description": "Sets the size of the arrow head relative to `marker.line.width`. A value of 1 (default) gives a head about 3x as wide as the line.", + "dflt": 1, + "editType": "calc", + "min": 0.3, + "valType": "number" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "calc", + "valType": "color" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorbar": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "colorbars", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "dtick": { + "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "colorbars", + "exponentformat": { + "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "labelalias": { + "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", + "dflt": false, + "editType": "colorbars", + "valType": "any" + }, + "len": { + "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "lenmode": { + "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", + "dflt": "fraction", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "minexponent": { + "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", + "dflt": 3, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "nticks": { + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "colorbars", + "valType": "boolean" + }, + "showexponent": { + "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "showtickprefix": { + "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "thickness": { + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "dflt": 30, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "thicknessmode": { + "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", + "dflt": "pixels", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "tick0": { + "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "tickangle": { + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", + "dflt": "auto", + "editType": "colorbars", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "dtickrange": { + "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", + "editType": "colorbars", + "items": [ + { + "editType": "colorbars", + "valType": "any" + }, + { + "editType": "colorbars", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "colorbars", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "colorbars", + "valType": "string" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "colorbars", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabeloverflow": { + "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "allow", + "hide past div", + "hide past domain" + ] + }, + "ticklabelposition": { + "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", + "dflt": "outside", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] + }, + "ticklabelstep": { + "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", + "dflt": 1, + "editType": "colorbars", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "tickmode": { + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", + "editType": "colorbars", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "ticks": { + "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", + "dflt": "", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "editType": "colorbars", + "valType": "data_array" + }, + "tickvals": { + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "editType": "colorbars", + "valType": "data_array" + }, + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "colorbars", + "font": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "side": { + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "colorbars", + "valType": "string" + } + }, + "x": { + "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", + "editType": "colorbars", + "valType": "number" + }, + "xanchor": { + "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "xref": { + "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + }, + "y": { + "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", + "editType": "colorbars", + "valType": "number" + }, + "yanchor": { + "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "yref": { + "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "editType": "calc", + "line": { + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "style", + "role": "object", + "width": { + "description": "Sets the width (in px) of the arrow lines.", + "dflt": 1, + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + } + }, + "meta": { + "arrayOk": true, + "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", + "editType": "plot", + "valType": "any" + }, + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" + }, + "opacity": { + "description": "Sets the opacity of the trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "selected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "line": { + "editType": "style", + "role": "object", + "width": { + "description": "Sets the line width of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object" + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "sizemode": { + "description": "Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths.", + "dflt": "scaled", + "editType": "calc", + "valType": "enumerated", + "values": [ + "scaled", + "absolute", + "raw" + ] + }, + "sizeref": { + "description": "Adjusts the arrow size scaling. The arrow length is determined by the vector norm multiplied by `sizeref`, optionally normalized when `sizemode` is *scaled*.", + "editType": "calc", + "min": 0, + "valType": "number" + }, + "text": { + "anim": true, + "description": "Sets text elements associated with each (x,y) pair.", + "editType": "calc", + "valType": "data_array" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "style", + "valType": "color" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "textposition": { + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "type": "quiver", + "u": { + "anim": true, + "description": "Sets the x components of the arrow vectors.", + "editType": "calc", + "valType": "data_array" + }, + "uhoverformat": { + "description": "Sets the hover text formatting rule for `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "dflt": "", + "editType": "none", + "valType": "string" + }, + "uid": { + "anim": true, + "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", + "editType": "plot", + "valType": "string" + }, + "uirevision": { + "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", + "editType": "none", + "valType": "any" + }, + "unselected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "line": { + "editType": "style", + "role": "object", + "width": { + "description": "Sets the line width of unselected points, applied only when a selection exists.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object" + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "v": { + "anim": true, + "description": "Sets the y components of the arrow vectors.", + "editType": "calc", + "valType": "data_array" + }, + "vhoverformat": { + "description": "Sets the hover text formatting rule for `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "dflt": "", + "editType": "none", + "valType": "string" + }, + "visible": { + "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", + "dflt": true, + "editType": "calc", + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ] + }, + "x": { + "anim": true, + "description": "Sets the x coordinates of the arrow locations.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "x0": { + "anim": true, + "description": "Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "xaxis": { + "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.", + "dflt": "x", + "editType": "calc+clearAxisTypes", + "valType": "subplotid" + }, + "xhoverformat": { + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "dflt": "", + "editType": "none", + "valType": "string" + }, + "y": { + "anim": true, + "description": "Sets the y coordinates of the arrow locations.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "y0": { + "anim": true, + "description": "Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "yaxis": { + "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", + "dflt": "y", + "editType": "calc+clearAxisTypes", + "valType": "subplotid" + }, + "yhoverformat": { + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "dflt": "", + "editType": "none", + "valType": "string" + } + }, + "categories": [ + "cartesian", + "svg", + "showLegend", + "scatter-like", + "zoomScale" + ], + "meta": { + "description": "The quiver trace type visualizes vector fields using arrows. Specify a vector field using 4 1D arrays: 2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`. The arrows are drawn exactly at the positions given by `x` and `y`. Arrow length and direction are determined by `u` and `v` components." + }, + "type": "quiver" + }, + "sankey": { + "animatable": false, + "attributes": { + "arrangement": { + "description": "If value is `snap` (the default), the node arrangement is assisted by automatic snapping of elements to preserve space between nodes specified via `nodepad`. If value is `perpendicular`, the nodes can only move along a line perpendicular to the flow. If value is `freeform`, the nodes can freely move on the plane. If value is `fixed`, the nodes are stationary.", + "dflt": "snap", + "editType": "calc", + "valType": "enumerated", + "values": [ + "snap", + "perpendicular", + "freeform", + "fixed" + ] + }, + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "editType": "calc", + "valType": "data_array" + }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this sankey trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this sankey trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -57657,7 +53867,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this sankey trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this sankey trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -57736,33 +53946,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "calc", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "calc", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "font": { "color": { @@ -57770,11 +53965,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "calc", "family": { @@ -57785,11 +53975,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -57805,11 +53990,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -57818,22 +53998,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -57845,11 +54015,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -57863,11 +54028,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -57883,11 +54043,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -57900,11 +54055,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -57915,11 +54065,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -57933,11 +54078,6 @@ "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -58085,7 +54225,7 @@ "valType": "number" }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": [ [ 0, @@ -58124,21 +54264,11 @@ }, "role": "object" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "customdata": { "description": "Assigns extra data to each link.", "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "description": "The links of the Sankey plot.", "editType": "calc", "hovercolor": { @@ -58147,11 +54277,6 @@ "editType": "calc", "valType": "color" }, - "hovercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovercolor`.", - "editType": "none", - "valType": "string" - }, "hoverinfo": { "description": "Determines which trace information appear when hovering links. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", "dflt": "all", @@ -58176,33 +54301,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "calc", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "calc", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "font": { "color": { @@ -58210,11 +54320,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "calc", "family": { @@ -58225,11 +54330,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -58245,11 +54345,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -58258,22 +54353,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -58285,11 +54370,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -58303,11 +54383,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -58323,11 +54398,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -58340,11 +54410,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -58355,11 +54420,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -58381,22 +54441,12 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "label": { "description": "The shown name of the link.", "dflt": [], "editType": "calc", "valType": "data_array" }, - "labelsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `label`.", - "editType": "none", - "valType": "string" - }, "line": { "color": { "arrayOk": true, @@ -58405,11 +54455,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -58419,11 +54464,6 @@ "editType": "calc", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "role": "object", @@ -58433,32 +54473,17 @@ "editType": "calc", "valType": "data_array" }, - "sourcesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `source`.", - "editType": "none", - "valType": "string" - }, "target": { "description": "An integer number `[0..nodes.length - 1]` that represents the target node.", "dflt": [], "editType": "calc", "valType": "data_array" }, - "targetsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `target`.", - "editType": "none", - "valType": "string" - }, "value": { "description": "A numeric value representing the flow volume value.", "dflt": [], "editType": "calc", "valType": "data_array" - }, - "valuesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `value`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -58467,11 +54492,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -58496,21 +54516,11 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "customdata": { "description": "Assigns extra data to each node.", "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "description": "The nodes of the Sankey plot.", "editType": "calc", "groups": { @@ -58553,33 +54563,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "calc", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "calc", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "font": { "color": { @@ -58587,11 +54582,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "calc", "family": { @@ -58602,11 +54592,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -58622,11 +54607,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -58635,22 +54615,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -58662,11 +54632,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -58680,11 +54645,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -58700,11 +54660,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -58717,11 +54672,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -58732,11 +54682,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -58758,22 +54703,12 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "label": { "description": "The shown name of the node.", "dflt": [], "editType": "calc", "valType": "data_array" }, - "labelsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `label`.", - "editType": "none", - "valType": "string" - }, "line": { "color": { "arrayOk": true, @@ -58782,11 +54717,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -58796,11 +54726,6 @@ "editType": "calc", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "pad": { @@ -58826,21 +54751,11 @@ "editType": "calc", "valType": "data_array" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "The normalized vertical position of the node.", "dflt": [], "editType": "calc", "valType": "data_array" - }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" } }, "orientation": { @@ -58858,25 +54773,6 @@ "editType": "calc", "valType": "any" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "textfont": { "color": { "editType": "calc", @@ -59035,11 +54931,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dx": { "anim": true, "description": "Sets the x coordinate step. See `x0` for more info.", @@ -59065,16 +54956,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "style", @@ -59158,16 +55039,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "style", @@ -59295,11 +55166,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -59308,11 +55174,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -59336,11 +55197,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -59359,11 +55215,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -59372,11 +55223,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -59385,11 +55231,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "groupnorm": { @@ -59422,11 +55263,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -59440,33 +55276,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -59474,11 +55295,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -59489,11 +55305,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -59509,11 +55320,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -59522,22 +55328,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -59549,11 +55345,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -59567,11 +55358,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -59587,11 +55373,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -59604,11 +55385,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -59619,11 +55395,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -59654,11 +55425,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -59666,22 +55432,12 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "anim": true, "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -59814,11 +55570,6 @@ "min": 0, "valType": "number" }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, "color": { "anim": true, "description": "Sets the line color.", @@ -59898,11 +55649,6 @@ "up" ] }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -60368,21 +56114,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -60483,7 +56219,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -60564,7 +56300,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -60572,11 +56308,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "gradient": { "color": { @@ -60585,11 +56316,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "type": { @@ -60604,11 +56330,6 @@ "vertical", "none" ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" } }, "line": { @@ -60666,7 +56387,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -60674,11 +56395,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "dash": { "arrayOk": true, "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", @@ -60694,11 +56410,6 @@ "longdashdot" ] }, - "dashsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `dash`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -60714,11 +56425,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "maxdisplayed": { @@ -60737,11 +56443,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -60787,11 +56488,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "standoff": { "anim": true, "arrayOk": true, @@ -60801,11 +56497,6 @@ "min": 0, "valType": "number" }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -61300,11 +56991,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -61313,11 +56999,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "editType": "calc", @@ -61421,25 +57102,6 @@ "editType": "calc", "valType": "string" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -61453,11 +57115,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -61468,11 +57125,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -61488,11 +57140,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -61501,22 +57148,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -61528,11 +57165,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -61546,11 +57178,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -61566,11 +57193,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -61583,11 +57205,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -61608,16 +57225,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. ", @@ -61631,11 +57238,6 @@ "editType": "calc", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scatter", "uid": { "anim": true, @@ -61738,7 +57340,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -61765,11 +57367,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "anim": true, "description": "Sets the y coordinates.", @@ -61814,7 +57411,7 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -61841,11 +57438,6 @@ "end" ] }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "zorder": { "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.", "dflt": 0, @@ -61900,11 +57492,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "error_x": { "array": { "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.", @@ -61916,16 +57503,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "calc", @@ -62009,16 +57586,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "calc", @@ -62102,16 +57669,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "calc", @@ -62199,11 +57756,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -62217,33 +57769,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -62251,11 +57788,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -62266,11 +57798,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -62286,11 +57813,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -62299,22 +57821,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -62326,11 +57838,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -62344,11 +57851,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -62364,11 +57866,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -62381,11 +57878,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -62396,11 +57888,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -62422,11 +57909,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets text elements associated with each (x,y,z) triplet. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y,z) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -62434,21 +57916,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -63037,21 +58509,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -63152,7 +58614,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -63233,7 +58695,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -63241,11 +58703,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "dash": { "description": "Sets the dash style of the lines.", "dflt": "solid", @@ -63747,21 +59204,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -63862,7 +59309,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -63943,7 +59390,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -63951,11 +59398,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "autocolorscale": { @@ -64011,7 +59453,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -64019,11 +59461,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -64092,11 +59529,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type.", @@ -64113,11 +59545,6 @@ "square-open", "x" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -64126,11 +59553,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "dflt": "lines+markers", @@ -64252,25 +59674,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "surfaceaxis": { "description": "If *-1*, the scatter points are not fill with a surface If *0*, *1*, *2*, the scatter points are filled with a Delaunay surface about the x, y, z respectively.", "dflt": -1, @@ -64301,11 +59704,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -64316,11 +59714,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "role": "object", "size": { "arrayOk": true, @@ -64328,11 +59721,6 @@ "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -64344,11 +59732,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -64360,11 +59743,6 @@ "small-caps" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -64377,11 +59755,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -64402,16 +59775,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. ", @@ -64425,11 +59788,6 @@ "editType": "calc", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scatter3d", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -64482,16 +59840,11 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y coordinates.", "editType": "calc+clearAxisTypes", @@ -64522,16 +59875,11 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the z coordinates.", "editType": "calc+clearAxisTypes", @@ -64562,15 +59910,10 @@ ] }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -64593,21 +59936,11 @@ "editType": "calc", "valType": "data_array" }, - "asrc": { - "description": "Sets the source reference on Chart Studio Cloud for `a`.", - "editType": "none", - "valType": "string" - }, "b": { "description": "Sets the b-axis coordinates.", "editType": "calc", "valType": "data_array" }, - "bsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `b`.", - "editType": "none", - "valType": "string" - }, "carpet": { "description": "An identifier for this carpet, so that `scattercarpet` and `contourcarpet` traces can specify a carpet plot on which they lie", "editType": "calc", @@ -64624,11 +59957,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "fill": { "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", "dflt": "none", @@ -64663,11 +59991,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -64681,33 +60004,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -64715,11 +60023,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -64730,11 +60033,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -64750,11 +60048,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -64763,22 +60056,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -64790,11 +60073,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -64808,11 +60086,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -64828,11 +60101,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -64845,11 +60113,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -64860,11 +60123,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -64895,33 +60153,18 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, - "description": "Sets hover text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b). To be seen, trace `hoverinfo` must contain a *text* flag.", + "description": "Sets hover text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b). To be seen, trace `hoverinfo` must contain a *text* flag.", "dflt": "", "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -65054,11 +60297,6 @@ "min": 0, "valType": "number" }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the line color.", "editType": "style", @@ -65124,11 +60362,6 @@ "up" ] }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -65593,21 +60826,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -65708,7 +60931,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -65789,7 +61012,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -65797,11 +61020,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "gradient": { "color": { @@ -65810,11 +61028,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "type": { @@ -65829,11 +61042,6 @@ "vertical", "none" ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" } }, "line": { @@ -65890,7 +61098,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -65898,11 +61106,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "dash": { "arrayOk": true, "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", @@ -65918,11 +61121,6 @@ "longdashdot" ] }, - "dashsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `dash`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -65937,11 +61135,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "maxdisplayed": { @@ -65959,11 +61152,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -66008,11 +61196,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "standoff": { "arrayOk": true, "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", @@ -66021,11 +61204,6 @@ "min": 0, "valType": "number" }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -66520,11 +61698,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -66533,11 +61706,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "dflt": "markers", @@ -66611,28 +61779,9 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, - "description": "Sets text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "description": "Sets text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", "dflt": "", "editType": "calc", "valType": "string" @@ -66643,11 +61792,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -66658,11 +61802,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -66678,11 +61817,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -66691,22 +61825,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -66718,11 +61842,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -66736,11 +61855,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -66756,11 +61870,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -66773,11 +61882,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -66798,16 +61902,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b` and `text`.", @@ -66821,11 +61915,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scattercarpet", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -66930,11 +62019,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "featureidkey": { "description": "Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Only has an effect when `geojson` is set. Support nested property, for example *properties.name*.", "dflt": "id", @@ -66986,11 +62070,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -67004,33 +62083,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -67038,11 +62102,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -67053,11 +62112,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -67073,11 +62127,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -67086,22 +62135,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -67113,11 +62152,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -67131,11 +62165,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -67151,11 +62180,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -67168,11 +62192,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -67183,11 +62202,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -67209,11 +62223,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (lon,lat) pair or item in `locations`. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) or `locations` coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -67221,31 +62230,16 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "lat": { "description": "Sets the latitude coordinates (in degrees North).", "editType": "calc", "valType": "data_array" }, - "latsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lat`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -67400,7 +62394,7 @@ } }, "locationmode": { - "description": "The library used by the *country names* `locationmode` option is changing in an upcoming version. Country names in existing plots may not work in the new version. Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*).", + "description": "Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*).", "dflt": "ISO-3", "editType": "calc", "valType": "enumerated", @@ -67416,21 +62410,11 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "lon": { "description": "Sets the longitude coordinates (in degrees East).", "editType": "calc", "valType": "data_array" }, - "lonsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lon`.", - "editType": "none", - "valType": "string" - }, "marker": { "angle": { "arrayOk": true, @@ -67450,11 +62434,6 @@ "north" ] }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -67919,21 +62898,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -68034,7 +63003,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -68115,7 +63084,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -68123,11 +63092,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "gradient": { "color": { @@ -68136,11 +63100,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "type": { @@ -68155,11 +63114,6 @@ "vertical", "none" ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" } }, "line": { @@ -68216,7 +63170,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -68224,11 +63178,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "dash": { "arrayOk": true, "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", @@ -68244,11 +63193,6 @@ "longdashdot" ] }, - "dashsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `dash`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -68263,11 +63207,6 @@ "editType": "calc", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -68278,11 +63217,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -68327,11 +63261,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "standoff": { "arrayOk": true, "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", @@ -68340,11 +63269,6 @@ "min": 0, "valType": "number" }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -68839,11 +63763,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -68852,11 +63771,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "dflt": "markers", @@ -68930,25 +63844,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets text elements associated with each (lon,lat) pair or item in `locations`. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) or `locations` coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -68962,11 +63857,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -68977,11 +63867,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -68997,11 +63882,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -69010,22 +63890,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -69037,11 +63907,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -69055,11 +63920,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -69075,11 +63935,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -69092,11 +63947,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -69117,16 +63967,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon`, `location` and `text`.", @@ -69140,11 +63980,6 @@ "editType": "calc", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scattergeo", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -69229,11 +64064,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dx": { "description": "Sets the x coordinate step. See `x0` for more info.", "dflt": 1, @@ -69257,16 +64087,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "calc", @@ -69350,16 +64170,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "calc", @@ -69467,11 +64277,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -69485,33 +64290,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -69519,11 +64309,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -69534,11 +64319,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -69554,11 +64334,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -69567,22 +64342,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -69594,11 +64359,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -69612,11 +64372,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -69632,11 +64387,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -69649,11 +64399,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -69664,11 +64409,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -69690,11 +64430,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -69702,21 +64437,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -69891,11 +64616,6 @@ "editType": "calc", "valType": "angle" }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -70360,21 +65080,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -70475,7 +65185,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -70556,7 +65266,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -70564,11 +65274,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "autocolorscale": { @@ -70624,7 +65329,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -70632,11 +65337,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -70651,11 +65351,6 @@ "editType": "calc", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -70666,11 +65361,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -70715,11 +65405,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -71214,11 +65899,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -71227,11 +65907,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace.", "editType": "calc", @@ -71304,25 +65979,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -71336,11 +65992,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -71351,11 +66002,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "role": "object", "size": { "arrayOk": true, @@ -71363,11 +66009,6 @@ "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -71379,11 +66020,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -71395,11 +66031,6 @@ "small-caps" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -71410,11 +66041,6 @@ "normal", "bold" ] - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -71435,16 +66061,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. ", @@ -71458,11 +66074,6 @@ "editType": "calc", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scattergl", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -71562,7 +66173,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -71589,11 +66200,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y coordinates.", "editType": "calc+clearAxisTypes", @@ -71636,7 +66242,7 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -71662,11 +66268,6 @@ "middle", "end" ] - }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -71699,11 +66300,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "enabled": { "description": "Determines whether clustering is enabled or disabled.", @@ -71727,11 +66323,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "role": "object", "size": { "arrayOk": true, @@ -71741,11 +66332,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "step": { "arrayOk": true, "description": "Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value.", @@ -71753,11 +66339,6 @@ "editType": "calc", "min": -1, "valType": "number" - }, - "stepsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `step`.", - "editType": "none", - "valType": "string" } }, "connectgaps": { @@ -71771,11 +66352,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "fill": { "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape.", "dflt": "none", @@ -71809,11 +66385,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -71827,33 +66398,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -71861,11 +66417,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -71876,11 +66427,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -71896,11 +66442,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -71909,22 +66450,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -71936,11 +66467,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -71954,11 +66480,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -71974,11 +66495,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -71991,11 +66507,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -72006,11 +66517,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -72032,11 +66538,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -72044,31 +66545,16 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "lat": { "description": "Sets the latitude coordinates (in degrees North).", "editType": "calc", "valType": "data_array" }, - "latsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lat`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -72213,11 +66699,6 @@ "editType": "calc", "valType": "data_array" }, - "lonsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lon`.", - "editType": "none", - "valType": "string" - }, "marker": { "allowoverlap": { "description": "Flag to draw all symbols, even if they overlap.", @@ -72232,11 +66713,6 @@ "editType": "calc", "valType": "number" }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -72701,21 +67177,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -72816,7 +67282,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -72897,7 +67363,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -72905,11 +67371,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "opacity": { "arrayOk": true, @@ -72919,11 +67380,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -72968,22 +67424,12 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", "dflt": "circle", "editType": "calc", "valType": "string" - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -72992,11 +67438,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", "dflt": "markers", @@ -73061,25 +67502,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.", "dflt": "map", @@ -73155,11 +67577,6 @@ "bottom right" ] }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", @@ -73173,11 +67590,6 @@ "editType": "calc", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scattermap", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -73255,11 +67667,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "enabled": { "description": "Determines whether clustering is enabled or disabled.", @@ -73283,11 +67690,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "role": "object", "size": { "arrayOk": true, @@ -73297,11 +67699,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "step": { "arrayOk": true, "description": "Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value.", @@ -73309,11 +67706,6 @@ "editType": "calc", "min": -1, "valType": "number" - }, - "stepsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `step`.", - "editType": "none", - "valType": "string" } }, "connectgaps": { @@ -73327,11 +67719,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "fill": { "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape.", "dflt": "none", @@ -73365,11 +67752,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -73383,33 +67765,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -73417,11 +67784,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -73432,11 +67794,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -73452,11 +67809,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -73465,22 +67817,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -73492,11 +67834,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -73510,11 +67847,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -73530,11 +67862,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -73547,11 +67874,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -73562,11 +67884,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -73588,11 +67905,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -73600,31 +67912,16 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "lat": { "description": "Sets the latitude coordinates (in degrees North).", "editType": "calc", "valType": "data_array" }, - "latsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lat`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -73769,11 +68066,6 @@ "editType": "calc", "valType": "data_array" }, - "lonsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lon`.", - "editType": "none", - "valType": "string" - }, "marker": { "allowoverlap": { "description": "Flag to draw all symbols, even if they overlap.", @@ -73788,11 +68080,6 @@ "editType": "calc", "valType": "number" }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -74257,21 +68544,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -74372,7 +68649,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -74453,7 +68730,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -74461,11 +68738,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "opacity": { "arrayOk": true, @@ -74475,11 +68747,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -74524,22 +68791,12 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", "dflt": "circle", "editType": "calc", "valType": "string" - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -74548,11 +68805,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", "dflt": "markers", @@ -74617,25 +68869,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.", "dflt": "mapbox", @@ -74711,11 +68944,6 @@ "bottom right" ] }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", @@ -74729,11 +68957,6 @@ "editType": "calc", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scattermapbox", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -74816,11 +69039,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dr": { "description": "Sets the r coordinate step.", "dflt": 1, @@ -74866,11 +69084,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -74884,33 +69097,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -74918,11 +69116,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -74933,11 +69126,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -74953,11 +69141,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -74966,22 +69149,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -74993,11 +69166,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -75011,11 +69179,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -75031,11 +69194,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -75048,11 +69206,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -75063,11 +69216,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -75098,11 +69246,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -75110,21 +69253,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -75257,11 +69390,6 @@ "min": 0, "valType": "number" }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the line color.", "editType": "style", @@ -75327,11 +69455,6 @@ "up" ] }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -75796,21 +69919,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -75911,7 +70024,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -75992,7 +70105,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -76000,11 +70113,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "gradient": { "color": { @@ -76013,11 +70121,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "type": { @@ -76032,11 +70135,6 @@ "vertical", "none" ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" } }, "line": { @@ -76093,7 +70191,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -76101,11 +70199,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "dash": { "arrayOk": true, "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", @@ -76121,11 +70214,6 @@ "longdashdot" ] }, - "dashsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `dash`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -76140,11 +70228,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "maxdisplayed": { @@ -76162,11 +70245,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -76211,11 +70289,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "standoff": { "arrayOk": true, "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", @@ -76224,11 +70297,6 @@ "min": 0, "valType": "number" }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -76723,11 +70791,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -76736,11 +70799,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "editType": "calc", @@ -76778,11 +70836,6 @@ "editType": "calc+clearAxisTypes", "valType": "any" }, - "rsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `r`.", - "editType": "none", - "valType": "string" - }, "selected": { "editType": "style", "marker": { @@ -76829,25 +70882,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", "dflt": "polar", @@ -76867,11 +70901,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -76882,11 +70911,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -76902,11 +70926,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -76915,22 +70934,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -76942,11 +70951,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -76960,11 +70964,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -76980,11 +70979,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -76997,11 +70991,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -77022,16 +71011,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", @@ -77045,11 +71024,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "theta": { "description": "Sets the angular coordinates", "editType": "calc+clearAxisTypes", @@ -77061,11 +71035,6 @@ "editType": "calc+clearAxisTypes", "valType": "any" }, - "thetasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `theta`.", - "editType": "none", - "valType": "string" - }, "thetaunit": { "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", "dflt": "degrees", @@ -77161,11 +71130,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dr": { "description": "Sets the r coordinate step.", "dflt": 1, @@ -77215,11 +71179,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -77233,33 +71192,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -77267,11 +71211,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -77282,11 +71221,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -77302,11 +71236,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -77315,22 +71244,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -77342,11 +71261,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -77360,11 +71274,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -77380,11 +71289,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -77397,11 +71301,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -77412,11 +71311,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -77438,11 +71332,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -77450,21 +71339,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -77626,11 +71505,6 @@ "editType": "calc", "valType": "angle" }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -78095,21 +71969,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -78210,7 +72074,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -78291,7 +72155,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -78299,11 +72163,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "autocolorscale": { @@ -78359,7 +72218,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -78367,11 +72226,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -78386,11 +72240,6 @@ "editType": "calc", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -78401,11 +72250,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -78450,11 +72294,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -78949,11 +72788,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -78962,11 +72796,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "editType": "calc", @@ -79004,11 +72833,6 @@ "editType": "calc+clearAxisTypes", "valType": "any" }, - "rsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `r`.", - "editType": "none", - "valType": "string" - }, "selected": { "editType": "style", "marker": { @@ -79055,25 +72879,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", "dflt": "polar", @@ -79093,11 +72898,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -79108,11 +72908,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "role": "object", "size": { "arrayOk": true, @@ -79120,11 +72915,6 @@ "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -79136,11 +72926,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -79152,11 +72937,6 @@ "small-caps" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -79167,11 +72947,6 @@ "normal", "bold" ] - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -79192,16 +72967,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", @@ -79215,11 +72980,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "theta": { "description": "Sets the angular coordinates", "editType": "calc+clearAxisTypes", @@ -79231,11 +72991,6 @@ "editType": "calc+clearAxisTypes", "valType": "any" }, - "thetasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `theta`.", - "editType": "none", - "valType": "string" - }, "thetaunit": { "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", "dflt": "degrees", @@ -79339,11 +73094,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "fill": { "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scattersmith has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", "dflt": "none", @@ -79378,11 +73128,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -79396,33 +73141,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -79430,11 +73160,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -79445,11 +73170,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -79465,11 +73185,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -79478,22 +73193,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -79505,11 +73210,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -79523,11 +73223,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -79543,11 +73238,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -79560,11 +73250,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -79575,11 +73260,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -79610,11 +73290,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -79622,31 +73297,16 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "imag": { "description": "Sets the imaginary component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart.", "editType": "calc+clearAxisTypes", "valType": "data_array" }, - "imagsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `imag`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -79779,11 +73439,6 @@ "min": 0, "valType": "number" }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the line color.", "editType": "style", @@ -79849,11 +73504,6 @@ "up" ] }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -80318,21 +73968,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -80433,7 +74073,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -80514,7 +74154,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -80522,11 +74162,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "gradient": { "color": { @@ -80535,11 +74170,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "type": { @@ -80554,11 +74184,6 @@ "vertical", "none" ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" } }, "line": { @@ -80615,7 +74240,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -80623,11 +74248,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "dash": { "arrayOk": true, "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", @@ -80643,11 +74263,6 @@ "longdashdot" ] }, - "dashsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `dash`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -80662,11 +74277,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "maxdisplayed": { @@ -80684,11 +74294,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -80733,11 +74338,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "standoff": { "arrayOk": true, "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", @@ -80746,11 +74346,6 @@ "min": 0, "valType": "number" }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -81245,11 +74840,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -81258,11 +74848,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "editType": "calc", @@ -81294,11 +74879,6 @@ "editType": "calc+clearAxisTypes", "valType": "data_array" }, - "realsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `real`.", - "editType": "none", - "valType": "string" - }, "selected": { "editType": "style", "marker": { @@ -81345,25 +74925,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "Sets a reference between this trace's data coordinates and a smith subplot. If *smith* (the default value), the data refer to `layout.smith`. If *smith2*, the data refer to `layout.smith2`, and so on.", "dflt": "smith", @@ -81383,11 +74944,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -81398,11 +74954,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -81418,11 +74969,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -81431,22 +74977,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -81458,11 +74994,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -81476,11 +75007,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -81496,11 +75022,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -81513,11 +75034,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -81538,16 +75054,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `real`, `imag` and `text`.", @@ -81561,11 +75067,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scattersmith", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -81644,21 +75145,11 @@ "editType": "calc", "valType": "data_array" }, - "asrc": { - "description": "Sets the source reference on Chart Studio Cloud for `a`.", - "editType": "none", - "valType": "string" - }, "b": { "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", "editType": "calc", "valType": "data_array" }, - "bsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `b`.", - "editType": "none", - "valType": "string" - }, "c": { "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", "editType": "calc", @@ -81676,21 +75167,11 @@ "editType": "calc", "valType": "boolean" }, - "csrc": { - "description": "Sets the source reference on Chart Studio Cloud for `c`.", - "editType": "none", - "valType": "string" - }, "customdata": { "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "fill": { "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", "dflt": "none", @@ -81726,11 +75207,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -81744,33 +75220,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -81778,11 +75239,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -81793,11 +75249,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -81813,11 +75264,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -81826,22 +75272,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -81853,11 +75289,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -81871,11 +75302,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -81891,11 +75317,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -81908,11 +75329,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -81923,11 +75339,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -81958,33 +75369,18 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, - "description": "Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag.", + "description": "Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag.", "dflt": "", "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -82117,11 +75513,6 @@ "min": 0, "valType": "number" }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the line color.", "editType": "style", @@ -82187,11 +75578,6 @@ "up" ] }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -82656,21 +76042,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -82771,7 +76147,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -82852,7 +76228,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -82860,11 +76236,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "gradient": { "color": { @@ -82873,11 +76244,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "type": { @@ -82892,11 +76258,6 @@ "vertical", "none" ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" } }, "line": { @@ -82953,7 +76314,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -82961,11 +76322,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "dash": { "arrayOk": true, "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", @@ -82981,11 +76337,6 @@ "longdashdot" ] }, - "dashsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `dash`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -83000,11 +76351,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "maxdisplayed": { @@ -83022,11 +76368,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -83071,11 +76412,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "standoff": { "arrayOk": true, "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", @@ -83084,11 +76420,6 @@ "min": 0, "valType": "number" }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -83583,11 +76914,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -83596,11 +76922,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "dflt": "markers", @@ -83674,25 +76995,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "Sets a reference between this trace's data coordinates and a ternary subplot. If *ternary* (the default value), the data refer to `layout.ternary`. If *ternary2*, the data refer to `layout.ternary2`, and so on.", "dflt": "ternary", @@ -83708,7 +77010,7 @@ }, "text": { "arrayOk": true, - "description": "Sets text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "description": "Sets text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b,c). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", "dflt": "", "editType": "calc", "valType": "string" @@ -83719,11 +77021,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -83734,11 +77031,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -83754,11 +77046,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -83767,22 +77054,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -83794,11 +77071,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -83812,11 +77084,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -83832,11 +77099,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -83849,11 +77111,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -83874,16 +77131,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b`, `c` and `text`.", @@ -83897,11 +77144,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scatterternary", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -83980,11 +77222,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "diagonal": { "editType": "calc", "role": "object", @@ -84002,7 +77239,7 @@ "editType": "calc+clearAxisTypes", "matches": { "description": "Determines whether or not the x & y axes generated by this dimension match. Equivalent to setting the `matches` axis attribute in the layout with the correct axis id.", - "dflt": false, + "dflt": true, "editType": "calc", "valType": "boolean" }, @@ -84041,11 +77278,6 @@ "editType": "calc+clearAxisTypes", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this dimension is shown on the graph. Note that even visible false dimension contribute to the default grid generate by this splom trace.", "dflt": true, @@ -84075,11 +77307,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -84093,33 +77320,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -84127,11 +77339,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -84142,11 +77349,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -84162,11 +77364,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -84175,22 +77372,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -84202,11 +77389,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -84220,11 +77402,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -84240,11 +77417,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -84257,11 +77429,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -84272,11 +77439,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -84298,11 +77460,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -84310,21 +77467,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -84456,11 +77603,6 @@ "editType": "plot", "valType": "angle" }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -84925,21 +78067,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -85040,7 +78172,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -85121,7 +78253,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -85129,11 +78261,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "autocolorscale": { @@ -85189,7 +78316,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -85197,11 +78324,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -85216,11 +78338,6 @@ "editType": "calc", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -85231,11 +78348,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -85280,11 +78392,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -85779,11 +78886,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -85792,11 +78894,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -85859,25 +78956,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets text elements associated with each (x,y) pair to appear on hover. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates.", @@ -85885,11 +78963,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "splom", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -85950,7 +79023,7 @@ "valType": "info_array" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -85967,7 +79040,7 @@ "valType": "info_array" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -86447,21 +79520,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -86562,7 +79625,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -86643,7 +79706,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -86656,11 +79719,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "hoverinfo": { "arrayOk": true, "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", @@ -86685,11 +79743,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -86703,33 +79756,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -86737,11 +79775,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -86752,11 +79785,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -86772,11 +79800,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -86785,22 +79808,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -86812,11 +79825,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -86830,11 +79838,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -86850,11 +79853,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -86867,11 +79865,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -86882,11 +79875,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -86908,11 +79896,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "description": "Same as `text`.", "dflt": "", @@ -86924,11 +79907,6 @@ "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -87153,11 +80131,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -87210,49 +80183,15 @@ "editType": "calc", "valType": "data_array" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y components of the starting position of the streamtubes", "editType": "calc", "valType": "data_array" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the z components of the starting position of the streamtubes", "editType": "calc", "valType": "data_array" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" - } - }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" } }, "text": { @@ -87268,7 +80207,7 @@ "valType": "data_array" }, "uhoverformat": { - "description": "Sets the hover text formatting rulefor `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -87283,18 +80222,13 @@ "editType": "none", "valType": "any" }, - "usrc": { - "description": "Sets the source reference on Chart Studio Cloud for `u`.", - "editType": "none", - "valType": "string" - }, "v": { "description": "Sets the y components of the vector field.", "editType": "calc", "valType": "data_array" }, "vhoverformat": { - "description": "Sets the hover text formatting rulefor `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -87310,74 +80244,49 @@ "legendonly" ] }, - "vsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `v`.", - "editType": "none", - "valType": "string" - }, "w": { "description": "Sets the z components of the vector field.", "editType": "calc", "valType": "data_array" }, "whoverformat": { - "description": "Sets the hover text formatting rulefor `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" }, - "wsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `w`.", - "editType": "none", - "valType": "string" - }, "x": { "description": "Sets the x coordinates of the vector field.", "editType": "calc+clearAxisTypes", "valType": "data_array" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y coordinates of the vector field.", "editType": "calc+clearAxisTypes", "valType": "data_array" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the z coordinates of the vector field.", "editType": "calc+clearAxisTypes", "valType": "data_array" }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -87417,14 +80326,9 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this sunburst trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this sunburst trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -87433,7 +80337,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this sunburst trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this sunburst trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -87508,11 +80412,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -87526,33 +80425,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -87560,11 +80444,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -87575,11 +80454,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -87595,11 +80469,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -87608,22 +80477,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -87635,11 +80494,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -87653,11 +80507,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -87673,11 +80522,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -87690,11 +80534,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -87705,11 +80544,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -87731,11 +80565,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -87743,33 +80572,18 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "anim": true, "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "insidetextfont": { "color": { "arrayOk": true, "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying inside the sector.", "editType": "plot", "family": { @@ -87780,11 +80594,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -87800,11 +80609,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -87813,22 +80617,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -87840,11 +80634,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -87858,11 +80647,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -87878,11 +80662,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -87895,11 +80674,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "insidetextorientation": { @@ -87919,11 +80693,6 @@ "editType": "calc", "valType": "data_array" }, - "labelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `labels`.", - "editType": "none", - "valType": "string" - }, "leaf": { "editType": "plot", "opacity": { @@ -88517,21 +81286,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -88632,7 +81391,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -88718,7 +81477,7 @@ "valType": "data_array" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -88726,11 +81485,6 @@ }, "valType": "colorscale" }, - "colorssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `colors`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "color": { @@ -88740,11 +81494,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -88754,11 +81503,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "pattern": { @@ -88768,11 +81512,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -88781,11 +81520,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -88809,11 +81543,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -88832,11 +81561,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -88845,11 +81569,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -88858,11 +81577,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "reversescale": { @@ -88891,11 +81605,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -88915,11 +81624,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented at the center of a sunburst graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used.", "editType": "plot", "family": { @@ -88930,11 +81634,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -88950,11 +81649,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -88963,22 +81657,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -88990,11 +81674,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -89008,11 +81687,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -89028,11 +81702,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -89045,11 +81714,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "parents": { @@ -89057,11 +81721,6 @@ "editType": "calc", "valType": "data_array" }, - "parentssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `parents`.", - "editType": "none", - "valType": "string" - }, "root": { "color": { "description": "sets the color of the root node for a sunburst/treemap/icicle trace. this has no effect when a colorscale is used to set the markers.", @@ -89084,25 +81743,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", "editType": "plot", @@ -89114,11 +81754,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo`.", "editType": "plot", "family": { @@ -89129,11 +81764,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -89149,11 +81779,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -89162,22 +81787,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -89189,11 +81804,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -89207,11 +81817,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -89227,11 +81832,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -89244,11 +81844,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textinfo": { @@ -89268,11 +81863,6 @@ ], "valType": "flaglist" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`.", @@ -89286,11 +81876,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "sunburst", "uid": { "anim": true, @@ -89308,11 +81893,6 @@ "editType": "calc", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -89805,21 +82385,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -89920,7 +82490,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -90001,7 +82571,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -90297,11 +82867,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "hidesurface": { "description": "Determines whether or not a surface is drawn. For example, set `hidesurface` to *false* `contours.x.show` to *true* and `contours.y.show` to *true* to draw a wire frame plot.", "dflt": false, @@ -90327,11 +82892,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -90345,33 +82905,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -90379,11 +82924,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -90394,11 +82934,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -90414,11 +82949,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -90427,22 +82957,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -90454,11 +82974,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -90472,11 +82987,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -90492,11 +83002,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -90509,11 +83014,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -90524,11 +83024,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -90550,11 +83045,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -90562,21 +83052,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -90778,11 +83258,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -90825,35 +83300,11 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "surfacecolor": { "description": "Sets the surface color values, used for setting a color scale independent of `z`.", "editType": "calc", "valType": "data_array" }, - "surfacecolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `surfacecolor`.", - "editType": "none", - "valType": "string" - }, "text": { "arrayOk": true, "description": "Sets the text elements associated with each z value. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -90861,11 +83312,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "surface", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -90918,16 +83364,11 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y coordinates.", "editType": "calc+clearAxisTypes", @@ -90958,16 +83399,11 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the z coordinates.", "editType": "calc+clearAxisTypes", @@ -90998,15 +83434,10 @@ ] }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -91035,11 +83466,6 @@ "right" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "fill": { "color": { @@ -91049,11 +83475,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object" }, @@ -91063,11 +83484,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "", "editType": "calc", "family": { @@ -91078,11 +83494,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -91098,11 +83509,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -91111,22 +83517,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -91138,11 +83534,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -91156,11 +83547,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -91176,11 +83562,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -91193,11 +83574,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "format": { @@ -91206,11 +83582,6 @@ "editType": "calc", "valType": "data_array" }, - "formatsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `format`.", - "editType": "none", - "valType": "string" - }, "height": { "description": "The height of cells.", "dflt": 20, @@ -91224,11 +83595,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -91236,11 +83602,6 @@ "dflt": 1, "editType": "calc", "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "prefix": { @@ -91250,11 +83611,6 @@ "editType": "calc", "valType": "string" }, - "prefixsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `prefix`.", - "editType": "none", - "valType": "string" - }, "role": "object", "suffix": { "arrayOk": true, @@ -91263,21 +83619,11 @@ "editType": "calc", "valType": "string" }, - "suffixsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `suffix`.", - "editType": "none", - "valType": "string" - }, "values": { "description": "Cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string.", "dflt": [], "editType": "calc", "valType": "data_array" - }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" } }, "columnorder": { @@ -91285,11 +83631,6 @@ "editType": "calc", "valType": "data_array" }, - "columnordersrc": { - "description": "Sets the source reference on Chart Studio Cloud for `columnorder`.", - "editType": "none", - "valType": "string" - }, "columnwidth": { "arrayOk": true, "description": "The width of columns expressed as a ratio. Columns fill the available width in proportion of their specified column widths.", @@ -91297,24 +83638,14 @@ "editType": "calc", "valType": "number" }, - "columnwidthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `columnwidth`.", - "editType": "none", - "valType": "string" - }, "customdata": { "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this table trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this table trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -91323,7 +83654,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this table trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this table trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -91390,11 +83721,6 @@ "right" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "fill": { "color": { @@ -91404,11 +83730,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object" }, @@ -91418,11 +83739,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "", "editType": "calc", "family": { @@ -91433,11 +83749,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -91453,11 +83764,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -91466,22 +83772,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -91493,11 +83789,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -91511,11 +83802,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -91531,11 +83817,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -91548,11 +83829,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "format": { @@ -91561,11 +83837,6 @@ "editType": "calc", "valType": "data_array" }, - "formatsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `format`.", - "editType": "none", - "valType": "string" - }, "height": { "description": "The height of cells.", "dflt": 28, @@ -91579,11 +83850,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -91591,11 +83857,6 @@ "dflt": 1, "editType": "calc", "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "prefix": { @@ -91605,11 +83866,6 @@ "editType": "calc", "valType": "string" }, - "prefixsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `prefix`.", - "editType": "none", - "valType": "string" - }, "role": "object", "suffix": { "arrayOk": true, @@ -91618,21 +83874,11 @@ "editType": "calc", "valType": "string" }, - "suffixsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `suffix`.", - "editType": "none", - "valType": "string" - }, "values": { "description": "Header cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string.", "dflt": [], "editType": "calc", "valType": "data_array" - }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" } }, "hoverinfo": { @@ -91654,11 +83900,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -91672,33 +83913,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -91706,11 +83932,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -91721,11 +83942,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -91741,11 +83957,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -91754,22 +83965,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -91781,11 +83982,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -91799,11 +83995,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -91819,11 +84010,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -91836,11 +84022,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -91851,11 +84032,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -91869,11 +84045,6 @@ "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -91997,35 +84168,11 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", "valType": "string" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "type": "table", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -92085,14 +84232,9 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this treemap trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this treemap trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -92101,7 +84243,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this treemap trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this treemap trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -92176,11 +84318,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -92194,33 +84331,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -92228,11 +84350,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -92243,11 +84360,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -92263,11 +84375,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -92276,22 +84383,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -92303,11 +84400,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -92321,11 +84413,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -92341,11 +84428,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -92358,11 +84440,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -92373,11 +84450,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -92399,11 +84471,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -92411,33 +84478,18 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "anim": true, "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "insidetextfont": { "color": { "arrayOk": true, "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying inside the sector.", "editType": "plot", "family": { @@ -92448,11 +84500,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -92468,11 +84515,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -92481,22 +84523,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -92508,11 +84540,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -92526,11 +84553,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -92546,11 +84568,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -92563,11 +84580,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "labels": { @@ -92575,11 +84587,6 @@ "editType": "calc", "valType": "data_array" }, - "labelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `labels`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -93162,21 +85169,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -93277,7 +85274,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -93363,7 +85360,7 @@ "valType": "data_array" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -93371,11 +85368,6 @@ }, "valType": "colorscale" }, - "colorssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `colors`.", - "editType": "none", - "valType": "string" - }, "cornerradius": { "description": "Sets the maximum rounding of corners (in px).", "dflt": 0, @@ -93402,11 +85394,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -93416,11 +85403,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "pad": { @@ -93458,11 +85440,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -93471,11 +85448,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -93499,11 +85471,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -93522,11 +85489,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -93535,11 +85497,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -93548,11 +85505,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "reversescale": { @@ -93581,11 +85533,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -93605,11 +85552,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented on top left corner of a treemap graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used.", "editType": "plot", "family": { @@ -93620,11 +85562,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -93640,11 +85577,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -93653,22 +85585,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -93680,11 +85602,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -93698,11 +85615,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -93718,11 +85630,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -93735,11 +85642,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "parents": { @@ -93747,11 +85649,6 @@ "editType": "calc", "valType": "data_array" }, - "parentssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `parents`.", - "editType": "none", - "valType": "string" - }, "pathbar": { "edgeshape": { "description": "Determines which shape is used for edges between `barpath` labels.", @@ -93769,7 +85666,7 @@ "editType": "calc", "role": "object", "side": { - "description": "Determines on which side of the the treemap the `pathbar` should be presented.", + "description": "Determines on which side of the treemap the `pathbar` should be presented.", "dflt": "top", "editType": "plot", "valType": "enumerated", @@ -93784,11 +85681,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used inside `pathbar`.", "editType": "plot", "family": { @@ -93799,11 +85691,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -93819,11 +85706,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -93832,22 +85714,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -93859,11 +85731,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -93877,11 +85744,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -93897,11 +85759,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -93914,11 +85771,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "thickness": { @@ -93950,25 +85802,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", "editType": "plot", @@ -93980,11 +85813,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo`.", "editType": "plot", "family": { @@ -93995,11 +85823,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -94015,11 +85838,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -94028,22 +85846,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -94055,11 +85863,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -94073,11 +85876,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -94093,11 +85891,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -94110,11 +85903,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textinfo": { @@ -94151,11 +85939,6 @@ "bottom right" ] }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`.", @@ -94169,11 +85952,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "tiling": { "editType": "calc", "flip": { @@ -94233,11 +86011,6 @@ "editType": "calc", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -94327,11 +86100,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "fillcolor": { "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", "editType": "style", @@ -94356,11 +86124,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -94374,33 +86137,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -94408,11 +86156,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -94423,11 +86166,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -94443,11 +86181,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -94456,22 +86189,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -94483,11 +86206,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -94501,11 +86219,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -94521,11 +86234,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -94538,11 +86246,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -94553,11 +86256,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -94593,11 +86291,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -94605,21 +86298,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "jitter": { "description": "Sets the amount of jitter in the sample points drawn. If *0*, the sample points align along the distribution axis. If *1*, the sample points are drawn in a random jitter of width equal to the width of the violins.", "editType": "calc", @@ -95359,11 +87042,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover. For violin traces, the name will also be used for the position coordinate, if `x` and `x0` (`y` and `y0` if horizontal) are missing and the position axis is categorical. Note that the trace name is also used as a default value for attribute `scalegroup` (please see its description for details).", "editType": "calc+clearAxisTypes", @@ -95422,7 +87100,7 @@ ] }, "scalegroup": { - "description": "If there are multiple violins that should be sized according to to some metric (see `scalemode`), link them by providing a non-empty group id here shared by every trace in the same group. If a violin's `width` is undefined, `scalegroup` will default to the trace's name. In this case, violins with the same names will be linked together", + "description": "If there are multiple violins that should be sized according to some metric (see `scalemode`), link them by providing a non-empty group id here shared by every trace in the same group. If a violin's `width` is undefined, `scalegroup` will default to the trace's name. In this case, violins with the same names will be linked together", "dflt": "", "editType": "calc", "valType": "string" @@ -95511,25 +87189,6 @@ "manual" ] }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets the text elements associated with each sample value. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -95537,11 +87196,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "violin", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -95614,16 +87268,11 @@ "valType": "subplotid" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y sample data or coordinates. See overview for more info.", "editType": "calc+clearAxisTypes", @@ -95641,16 +87290,11 @@ "valType": "subplotid" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "zorder": { "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.", "dflt": 0, @@ -95697,7 +87341,7 @@ } }, "meta": { - "description": "In vertical (horizontal) violin plots, statistics are computed using `y` (`x`) values. By supplying an `x` (`y`) array, one violin per distinct x (y) value is drawn If no `x` (`y`) {array} is provided, a single violin is drawn. That violin position is then positioned with with `name` or with `x0` (`y0`) if provided." + "description": "In vertical (horizontal) violin plots, statistics are computed using `y` (`x`) values. By supplying an `x` (`y`) array, one violin per distinct x (y) value is drawn If no `x` (`y`) {array} is provided, a single violin is drawn. That violin position is then positioned with `name` or with `x0` (`y0`) if provided." }, "type": "violin" }, @@ -96220,21 +87864,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -96335,7 +87969,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -96416,7 +88050,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -96453,11 +88087,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "flatshading": { "description": "Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections.", "dflt": true, @@ -96483,11 +88112,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -96501,33 +88125,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -96535,11 +88144,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -96550,11 +88154,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -96570,11 +88169,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -96583,22 +88177,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -96610,11 +88194,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -96628,11 +88207,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -96648,11 +88222,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -96665,11 +88234,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -96680,11 +88244,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -96706,11 +88265,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -96718,21 +88272,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "isomax": { "description": "Sets the maximum boundary for iso-surface plot.", "editType": "calc", @@ -96960,11 +88504,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -97026,11 +88565,6 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "role": "object", "show": { "description": "Determines whether or not slice planes about the x dimension are drawn.", @@ -97055,11 +88589,6 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "role": "object", "show": { "description": "Determines whether or not slice planes about the y dimension are drawn.", @@ -97084,11 +88613,6 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "role": "object", "show": { "description": "Determines whether or not slice planes about the z dimension are drawn.", @@ -97116,25 +88640,6 @@ "valType": "boolean" } }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "surface": { "count": { "description": "Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn.", @@ -97185,11 +88690,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "volume", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -97207,16 +88707,11 @@ "valType": "data_array" }, "valuehoverformat": { - "description": "Sets the hover text formatting rulefor `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "calc", "valType": "string" }, - "valuesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `value`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -97234,47 +88729,32 @@ "valType": "data_array" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the Y coordinates of the vertices on Y axis.", "editType": "calc+clearAxisTypes", "valType": "data_array" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the Z coordinates of the vertices on Z axis.", "editType": "calc+clearAxisTypes", "valType": "data_array" }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -97376,11 +88856,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "decreasing": { "editType": "style", "marker": { @@ -97446,11 +88921,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -97464,33 +88934,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -97498,11 +88953,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -97513,11 +88963,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -97533,11 +88978,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -97546,22 +88986,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -97573,11 +89003,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -97591,11 +89016,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -97611,11 +89031,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -97628,11 +89043,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -97643,11 +89053,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -97669,11 +89074,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -97681,21 +89081,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "increasing": { "editType": "style", "marker": { @@ -97745,11 +89135,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `text` lying inside the bar.", "editType": "calc", "family": { @@ -97760,11 +89145,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -97780,11 +89160,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -97793,22 +89168,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -97820,11 +89185,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -97838,11 +89198,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -97858,11 +89213,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -97875,11 +89225,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "legend": { @@ -98011,22 +89356,12 @@ "editType": "calc", "valType": "data_array" }, - "measuresrc": { - "description": "Sets the source reference on Chart Studio Cloud for `measure`.", - "editType": "none", - "valType": "string" - }, "meta": { "arrayOk": true, "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -98045,11 +89380,6 @@ "editType": "calc", "valType": "string" }, - "offsetsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `offset`.", - "editType": "none", - "valType": "string" - }, "opacity": { "description": "Sets the opacity of the trace.", "dflt": 1, @@ -98073,11 +89403,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `text` lying outside the bar.", "editType": "calc", "family": { @@ -98088,11 +89413,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -98108,11 +89428,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -98121,22 +89436,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -98148,11 +89453,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -98166,11 +89466,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -98186,11 +89481,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -98203,11 +89493,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "selectedpoints": { @@ -98221,25 +89506,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -98259,11 +89525,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `text`.", "editType": "calc", "family": { @@ -98274,11 +89535,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -98294,11 +89550,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -98307,22 +89558,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -98334,11 +89575,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -98352,11 +89588,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -98372,11 +89603,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -98389,11 +89615,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textinfo": { @@ -98425,16 +89646,6 @@ "none" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `initial`, `delta`, `final` and `label`.", @@ -98448,11 +89659,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "totals": { "editType": "style", "marker": { @@ -98515,11 +89721,6 @@ "min": 0, "valType": "number" }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" - }, "x": { "description": "Sets the x coordinates.", "editType": "calc+clearAxisTypes", @@ -98538,7 +89739,7 @@ "valType": "subplotid" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -98565,11 +89766,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y coordinates.", "editType": "calc+clearAxisTypes", @@ -98588,7 +89784,7 @@ "valType": "subplotid" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -98615,11 +89811,6 @@ "end" ] }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "zorder": { "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.", "dflt": 0, diff --git a/topojson/package-lock.json b/topojson/package-lock.json index 5ead83fc2ff..c30459e432d 100644 --- a/topojson/package-lock.json +++ b/topojson/package-lock.json @@ -540,16 +540,16 @@ "license": "ISC" }, "node_modules/form-data": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz", - "integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.6.tgz", + "integrity": "sha512-Ogz/E85h9tlfJzpI6TuFpGcHZFhLrb9Gw8wq9v40CxSCPnv7ahKr6Xgtkn0KYCDQJ8DNn5VoMO8EXr9V5PadyA==", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", + "hasown": "^2.0.4", "mime-types": "^2.1.35", "safe-buffer": "^5.2.1" }, @@ -697,9 +697,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "dev": true, "license": "MIT", "dependencies": { diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000000..e3746f8f198 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,57 @@ +{ + "compilerOptions": { + // Target and module - optimized for CommonJS codebase + "target": "ES2016", + "module": "CommonJS", + "lib": ["ES2016", "DOM"], + + // Module resolution + "moduleResolution": "node", + "resolveJsonModule": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + + // Paths + "baseUrl": ".", + "paths": { + "stream": ["node_modules/stream-browserify"], + "@types": ["src/types"], + "@types/*": ["src/types/*"] + }, + + // Emit + "noEmit": true, + + "strict": true, + + // Linting + "noUnusedLocals": false, + "noUnusedParameters": false, + "noImplicitReturns": false, + "noFallthroughCasesInSwitch": true, + + // Advanced options + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "allowJs": true, + "checkJs": false, + "maxNodeModuleJsDepth": 1, + "isolatedModules": true + }, + "include": [ + "src/**/*", + "lib/**/*", + "tasks/**/*" + ], + "exclude": [ + "node_modules", + "dist", + "build", + "test", + "stackgl_modules", + "topojson", + "devtools", + "**/*.spec.js", + "**/*.test.js" + ] +}